blob: f0a177ab1ccc4edc669a68f0276793bccfcaf478 [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
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800190
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530191};
Jeff Johnson295189b2012-06-20 16:38:30 -0700192
193/*--------------------------------------------------------------------------
194 WLAN DAL State Machine
195 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700196WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700197{
198 /*WDI_INIT_ST*/
199 {{
200 WDI_MainStart, /*WDI_START_EVENT*/
201 NULL, /*WDI_STOP_EVENT*/
202 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
203 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
204 WDI_MainClose, /*WDI_CLOSE_EVENT*/
205 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
206 }},
207
208 /*WDI_STARTED_ST*/
209 {{
210 WDI_MainStartStarted, /*WDI_START_EVENT*/
211 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
212 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
213 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
214 NULL, /*WDI_CLOSE_EVENT*/
215 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
216 }},
217
218 /*WDI_STOPPED_ST*/
219 {{
220 WDI_MainStart, /*WDI_START_EVENT*/
221 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
222 NULL, /*WDI_REQUEST_EVENT*/
223 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
224 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700225 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700226 }},
227
228 /*WDI_BUSY_ST*/
229 {{
230 WDI_MainStartBusy, /*WDI_START_EVENT*/
231 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
232 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
233 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
234 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
235 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
236 }}
237};
238
Jeff Johnsone7245742012-09-05 17:12:55 -0700239/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700240 DAL Request Processing Array - the functions in this table will only be
241 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700242 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700243 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700244WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700245{
246 /*INIT*/
247 WDI_ProcessStartReq, /* WDI_START_REQ */
248 WDI_ProcessStopReq, /* WDI_STOP_REQ */
249 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
250
251 /*SCAN*/
252 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
253 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
254 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
255 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
256
257 /*ASSOCIATION*/
258 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
259 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
260 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
261 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
262 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
263
264 /* Security */
265 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
266 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
267 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
268 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
269
270 /* QoS and BA APIs */
271 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
272 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
273 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
274 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
275 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
276
277 /* Miscellaneous Control APIs */
278 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
279 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
280 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
281 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
282 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
283
284 /*BA APIs*/
285 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
286 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
287
288 /*Beacon processing APIs*/
289 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
290 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
291
292 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
293 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
294 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
295 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700296 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700297 /* PowerSave APIs */
298 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
299 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
300 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
301 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
302 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
303 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
304 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
305 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
306 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
307 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
308 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
309 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
310 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
311 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
312 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
313 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
314 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
315 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
316 /*NV Download APIs*/
317 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
318 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
319 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
320#ifdef WLAN_FEATURE_VOWIFI_11R
321 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
322#else
323 NULL,
324#endif /* WLAN_FEATURE_VOWIFI_11R */
325 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
326 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700327 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700328
329#ifdef FEATURE_OEM_DATA_SUPPORT
330 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
331#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700332 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700333#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700334 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700335
336 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700337
338#ifdef FEATURE_WLAN_SCAN_PNO
339 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
340 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
341 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
342#else
343 NULL,
344 NULL,
345 NULL,
346#endif /* FEATURE_WLAN_SCAN_PNO */
347
348 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700349
Jeff Johnson295189b2012-06-20 16:38:30 -0700350#ifdef WLAN_FEATURE_PACKET_FILTERING
351 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700352 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700353 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700354 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700355 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700356 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700357 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700358 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700359#else
360 NULL,
361 NULL,
362 NULL,
363 NULL,
364#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700365 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700366 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
367 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
368
369 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800370#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700371 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
372#else
373 NULL,
374#endif
375
376#ifdef WLAN_FEATURE_GTK_OFFLOAD
377 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
378 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
379#else
380 NULL,
381 NULL,
382#endif // WLAN_FEATURE_GTK_OFFLOAD
383
384 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
385 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700386#ifdef WLAN_FEATURE_11AC
387 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800388#else
389 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700390#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800391#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800392 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
393#else
schang86c22c42013-03-13 18:41:24 -0700394 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800395#endif
schang86c22c42013-03-13 18:41:24 -0700396 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700397#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700398 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700399#else
400 NULL,
401#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530402#ifdef FEATURE_WLAN_TDLS
403 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
404#else
405 NULL,
406#endif
Leo Chang9056f462013-08-01 19:21:11 -0700407#ifdef FEATURE_WLAN_LPHB
408 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
409#else
410 NULL,
411#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530412
413#ifdef FEATURE_WLAN_BATCH_SCAN
414 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
415#else
416 NULL,
417#endif /* FEATURE_WLAN_BATCH_SCAN */
418
Arif Hussaina5ebce02013-08-09 15:09:58 -0700419 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800420
421 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530422
423 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530424
425#ifdef WLAN_FEATURE_LINK_LAYER_STATS
426 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
427 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
428 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
429#else
430 NULL,
431 NULL,
432 NULL,
433#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530434#ifdef WLAN_FEATURE_EXTSCAN
435 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
436 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
437 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
438 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
439 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
440 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
441 WDI_ProcessEXTScanSetSignifRSSIChangeReq, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ */
442 WDI_ProcessEXTScanResetSignfRSSIChangeReq, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ */
443#else
444 NULL,
445 NULL,
446 NULL,
447 NULL,
448 NULL,
449 NULL,
450 NULL,
451 NULL,
452#endif /* WLAN_FEATURE_EXTSCAN */
schang86c22c42013-03-13 18:41:24 -0700453 /*-------------------------------------------------------------------------
454 Indications
455 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700456 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800457 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530458 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
459 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700460#ifdef WLAN_FEATURE_11W
461 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
462#else
463 NULL,
464#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700465 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
466 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530467#ifdef FEATURE_WLAN_BATCH_SCAN
468 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
469 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
470#else
471 NULL,
472 NULL,
473#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700474 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800475
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530476 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800477 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
478
479 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530480
Jeff Johnson295189b2012-06-20 16:38:30 -0700481};
482
483
Jeff Johnsone7245742012-09-05 17:12:55 -0700484/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700485 DAL Request Processing Array - the functions in this table will only be
486 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700487 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700488 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700489WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700490{
491 /*INIT*/
492 WDI_ProcessStartRsp, /* WDI_START_RESP */
493 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
494 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
495
496 /*SCAN*/
497 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
498 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
499 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
500 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
501
502 /* ASSOCIATION*/
503 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
504 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
505 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
506 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
507 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
508
509 /* Security */
510 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
511 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
512 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
513 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
514
515 /* QoS and BA APIs */
516 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
517 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
518 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
519 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
520 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
521
522 /* Miscellaneous Control APIs */
523 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
524 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
525 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
526 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
527 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
528
529 /* BA APIs*/
530 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
531 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700532
Jeff Johnson295189b2012-06-20 16:38:30 -0700533 /* IBSS APIs*/
534 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
535 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
536
537 /*Soft AP APIs*/
538 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
539 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
540 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
541 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
542
543 /* PowerSave APIs */
544 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
545 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
546 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
547 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
548 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
549 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
550 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
551 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
552 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
553 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
554 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
555 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
556 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
557 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
558 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
559 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
560 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
561 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700562
Jeff Johnson295189b2012-06-20 16:38:30 -0700563
564 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
565
566 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
567 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
568#ifdef WLAN_FEATURE_VOWIFI_11R
569 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
570#else
571 NULL,
572#endif /* WLAN_FEATURE_VOWIFI_11R */
573 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
574 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700575#ifdef FEATURE_OEM_DATA_SUPPORT
576 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
577#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700578 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700579#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700580 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
581
Jeff Johnson295189b2012-06-20 16:38:30 -0700582 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700583
Jeff Johnson295189b2012-06-20 16:38:30 -0700584 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700585
Jeff Johnsone7245742012-09-05 17:12:55 -0700586 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
587
Jeff Johnson295189b2012-06-20 16:38:30 -0700588#ifdef FEATURE_WLAN_SCAN_PNO
589 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
590 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
591 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
592#else
593 NULL,
594 NULL,
595 NULL,
596#endif // FEATURE_WLAN_SCAN_PNO
597
598 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
599
600 /*---------------------------------------------------------------------
601 Indications
602 ---------------------------------------------------------------------*/
603#ifdef WLAN_FEATURE_PACKET_FILTERING
604 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700605 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700606 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700607 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700608 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700609 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700610 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700611 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700612#else
613 NULL,
614 NULL,
615 NULL,
616 NULL,
617#endif // WLAN_FEATURE_PACKET_FILTERING
618
619 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
620 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
621
622 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800623#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700624 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
625#else
626 NULL,
627#endif
628
629#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700630 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
631 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700632#else
633 NULL,
634 NULL,
635#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700636 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
637 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700638#ifdef WLAN_FEATURE_11AC
639 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700640#else
641 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700642#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800643#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800644 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
645#else
646 NULL,
647#endif
schang86c22c42013-03-13 18:41:24 -0700648 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700649#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700650 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700651#else
652 NULL,
653#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530654#ifdef FEATURE_WLAN_TDLS
655 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
656#else
657 NULL,
658#endif
Leo Chang9056f462013-08-01 19:21:11 -0700659#ifdef FEATURE_WLAN_LPHB
660 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
661#else
662 NULL,
663#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530664
665#ifdef FEATURE_WLAN_BATCH_SCAN
666 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
667#else
668 NULL,
669#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800670 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530671
c_hpothu92367912014-05-01 15:18:17 +0530672 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800673
c_hpothu92367912014-05-01 15:18:17 +0530674 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
675
676 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800677
Sunil Duttbd736ed2014-05-26 21:19:41 +0530678
679#ifdef WLAN_FEATURE_LINK_LAYER_STATS
680 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
681 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
682 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
683#else
684 NULL,
685 NULL,
686 NULL,
687#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530688#ifdef WLAN_FEATURE_EXTSCAN
689 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
690 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
691 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
692 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
693 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
694 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
695 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
696 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
697#else
698 NULL,
699 NULL,
700 NULL,
701 NULL,
702 NULL,
703 NULL,
704 NULL,
705 NULL,
706#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -0700707 /*---------------------------------------------------------------------
708 Indications
709 ---------------------------------------------------------------------*/
710 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
711 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
712 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
713 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
714 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
715 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
716
717 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
718
719 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
720
Jeff Johnson295189b2012-06-20 16:38:30 -0700721 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700722
723#ifdef FEATURE_WLAN_SCAN_PNO
724 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
725#else
726 NULL,
727#endif // FEATURE_WLAN_SCAN_PNO
728
729#ifdef WLAN_WAKEUP_EVENTS
730 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
731#else // WLAN_WAKEUP_EVENTS
732 NULL,
733#endif // WLAN_WAKEUP_EVENTS
734
735 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800736
Viral Modid86bde22012-12-10 13:09:21 -0800737 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530738#ifdef FEATURE_WLAN_TDLS
739 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
740#else
741 NULL,
742#endif
Leo Chang9056f462013-08-01 19:21:11 -0700743
744#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700745 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700746#else
747 NULL,
748#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700749
750 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700751
752 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530753
754#ifdef FEATURE_WLAN_BATCH_SCAN
755 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
756#else
757 NULL,
758#endif
759
Leo Chang0b0e45a2013-12-15 15:18:55 -0800760#ifdef FEATURE_WLAN_CH_AVOID
761 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
762#else
763 NULL,
764#endif /* FEATURE_WLAN_CH_AVOID */
765
Sunil Duttbd736ed2014-05-26 21:19:41 +0530766 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
767#ifdef WLAN_FEATURE_LINK_LAYER_STATS
768 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
769#else
770 NULL,
771#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530772#ifdef WLAN_FEATURE_EXTSCAN
773 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
774 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
775 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
776 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
777 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
778#else
779 NULL,
780 NULL,
781 NULL,
782 NULL,
783 NULL,
784#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -0700785};
786
787
Jeff Johnsone7245742012-09-05 17:12:55 -0700788/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700789 WLAN DAL Global Control Block
790 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700791WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700792static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
793
Jeff Johnsone7245742012-09-05 17:12:55 -0700794const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700795
796/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700797WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700798void* WDI_GET_PAL_CTX( void )
799{
Jeff Johnsone7245742012-09-05 17:12:55 -0700800 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700801}/*WDI_GET_PAL_CTX*/
802
Jeff Johnsone7245742012-09-05 17:12:55 -0700803/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700804 Helper inline converters
805 ============================================================================*/
806/*Convert WDI driver type into HAL driver type*/
807WPT_STATIC WPT_INLINE WDI_Status
808WDI_HAL_2_WDI_STATUS
809(
810 eHalStatus halStatus
811);
812
813/*Convert WDI request type into HAL request type*/
814WPT_STATIC WPT_INLINE tHalHostMsgType
815WDI_2_HAL_REQ_TYPE
816(
817 WDI_RequestEnumType wdiReqType
818);
819
820/*Convert WDI response type into HAL response type*/
821WPT_STATIC WPT_INLINE WDI_ResponseEnumType
822HAL_2_WDI_RSP_TYPE
823(
824 tHalHostMsgType halMsg
825);
826
827/*Convert WDI driver type into HAL driver type*/
828WPT_STATIC WPT_INLINE tDriverType
829WDI_2_HAL_DRV_TYPE
830(
831 WDI_DriverType wdiDriverType
832);
833
834/*Convert WDI stop reason into HAL stop reason*/
835WPT_STATIC WPT_INLINE tHalStopType
836WDI_2_HAL_STOP_REASON
837(
838 WDI_StopType wdiStopType
839);
840
841/*Convert WDI scan mode type into HAL scan mode type*/
842WPT_STATIC WPT_INLINE eHalSysMode
843WDI_2_HAL_SCAN_MODE
844(
845 WDI_ScanMode wdiScanMode
846);
847
848/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700849WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700850WDI_2_HAL_SEC_CH_OFFSET
851(
852 WDI_HTSecondaryChannelOffset wdiSecChOffset
853);
854
855/*Convert WDI BSS type into HAL BSS type*/
856WPT_STATIC WPT_INLINE tSirBssType
857WDI_2_HAL_BSS_TYPE
858(
859 WDI_BssType wdiBSSType
860);
861
862/*Convert WDI NW type into HAL NW type*/
863WPT_STATIC WPT_INLINE tSirNwType
864WDI_2_HAL_NW_TYPE
865(
866 WDI_NwType wdiNWType
867);
868
869/*Convert WDI chanel bonding type into HAL cb type*/
870WPT_STATIC WPT_INLINE ePhyChanBondState
871WDI_2_HAL_CB_STATE
872(
873 WDI_PhyChanBondState wdiCbState
874);
875
876/*Convert WDI chanel bonding type into HAL cb type*/
877WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
878WDI_2_HAL_HT_OPER_MODE
879(
880 WDI_HTOperatingMode wdiHTOperMode
881);
882
883/*Convert WDI mimo PS type into HAL mimo PS type*/
884WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
885WDI_2_HAL_MIMO_PS
886(
887 WDI_HTMIMOPowerSaveState wdiHTOperMode
888);
889
890/*Convert WDI ENC type into HAL ENC type*/
891WPT_STATIC WPT_INLINE tAniEdType
892WDI_2_HAL_ENC_TYPE
893(
894 WDI_EncryptType wdiEncType
895);
896
897/*Convert WDI WEP type into HAL WEP type*/
898WPT_STATIC WPT_INLINE tAniWepType
899WDI_2_HAL_WEP_TYPE
900(
901 WDI_WepType wdiWEPType
902);
903
904/*Convert WDI Link State into HAL Link State*/
905WPT_STATIC WPT_INLINE tSirLinkState
906WDI_2_HAL_LINK_STATE
907(
908 WDI_LinkStateType wdiLinkState
909);
910
Jeff Johnsone7245742012-09-05 17:12:55 -0700911/*Translate a STA Context from WDI into HAL*/
912WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700913void
914WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700915(
Jeff Johnson295189b2012-06-20 16:38:30 -0700916 tConfigStaParams* phalConfigSta,
917 WDI_ConfigStaReqInfoType* pwdiConfigSta
918);
Jeff Johnsone7245742012-09-05 17:12:55 -0700919
920/*Translate a Rate set info from WDI into HAL*/
921WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700922WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700923(
Jeff Johnson295189b2012-06-20 16:38:30 -0700924 tSirMacRateSet* pHalRateSet,
925 WDI_RateSet* pwdiRateSet
926);
927
928/*Translate an EDCA Parameter Record from WDI into HAL*/
929WPT_STATIC WPT_INLINE void
930WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700931(
Jeff Johnson295189b2012-06-20 16:38:30 -0700932 tSirMacEdcaParamRecord* phalEdcaParam,
933 WDI_EdcaParamRecord* pWDIEdcaParam
934);
935
936/*Copy a management frame header from WDI fmt into HAL fmt*/
937WPT_STATIC WPT_INLINE void
938WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
939(
940 tSirMacMgmtHdr* pmacMgmtHdr,
941 WDI_MacMgmtHdr* pwdiMacMgmtHdr
942);
943
944/*Copy config bss parameters from WDI fmt into HAL fmt*/
945WPT_STATIC WPT_INLINE void
946WDI_CopyWDIConfigBSSToHALConfigBSS
947(
948 tConfigBssParams* phalConfigBSS,
949 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
950);
951
Jeff Johnsone7245742012-09-05 17:12:55 -0700952/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700953 pointed to by user data */
954WPT_STATIC WPT_INLINE void
955WDI_ExtractRequestCBFromEvent
956(
957 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700958 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700959 void** ppUserData
960);
961
962wpt_uint8
963WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700964(
Jeff Johnson295189b2012-06-20 16:38:30 -0700965 WDI_ControlBlockType* pWDICtx,
966 WDI_BSSSessionType** ppSession
967);
968
969void
970WDI_AddBcastSTAtoSTATable
971(
972 WDI_ControlBlockType* pWDICtx,
973 WDI_AddStaParams * staParams,
974 wpt_uint16 usBcastStaIdx
975);
976
977WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700978(
Jeff Johnson295189b2012-06-20 16:38:30 -0700979 WDI_ControlBlockType* pWDICtx,
980 WDI_EventInfoType* pEventData
981);
982
983void
984WDI_SetPowerStateCb
985(
986 wpt_status status,
987 unsigned int dxePhyAddr,
988 void *pContext
989);
990
Jeff Johnson295189b2012-06-20 16:38:30 -0700991/**
992 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700993
994 @param wdiReqMsgId: WDI Message request Id
995
996 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700997 @return Result of the function call
998*/
999static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1000{
1001 switch (wdiReqMsgId)
1002 {
1003 CASE_RETURN_STRING( WDI_START_REQ );
1004 CASE_RETURN_STRING( WDI_STOP_REQ );
1005 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1006 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1007 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1008 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1009 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1010 CASE_RETURN_STRING( WDI_JOIN_REQ );
1011 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1012 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1013 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1014 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1015 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1016 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1017 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1018 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1019 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1020 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1021 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1022 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1023 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1024 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001025 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001026 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1027 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1028 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1029 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1030 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1031 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1032 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1033 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1034 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1035 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1036 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1037 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001038 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001039 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301040#ifdef FEATURE_WLAN_TDLS
1041 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
1042#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001043 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1044 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1045 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1046 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1047 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1048 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1049 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1050 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1051 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1052 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1053 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1054 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1055 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1056 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1057 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1058 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1059 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1060 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1061 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1062 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1063 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1064 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1065 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1066 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1067 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001068 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001069 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1070 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1071 #ifdef FEATURE_WLAN_SCAN_PNO
1072 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1073 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1074 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1075 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001076#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001077 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001078#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001079 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1080 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1081 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1082 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1083 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1084 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1085 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1086 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1087 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301088 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001089 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001090 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001091#ifdef WLAN_FEATURE_11W
1092 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1093#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301094#ifdef FEATURE_WLAN_BATCH_SCAN
1095 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1096 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1097 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1098#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301099 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1100 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001101 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301102#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1103 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1104 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1105 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1106#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301107#ifdef WLAN_FEATURE_EXTSCAN
1108 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1109 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1110 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1111 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1112 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1113 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1114 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1115 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1116#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -07001117 default:
1118 return "Unknown WDI MessageId";
1119 }
1120}
1121
1122
1123
1124/**
1125 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001126
1127 @param wdiRespMsgId: WDI Message response Id
1128
1129 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001130 @return Result of the function call
1131*/
1132static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1133{
1134 switch (wdiRespMsgId)
1135 {
1136 CASE_RETURN_STRING( WDI_START_RESP );
1137 CASE_RETURN_STRING( WDI_STOP_RESP );
1138 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1139 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1140 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1141 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1142 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1143 CASE_RETURN_STRING( WDI_JOIN_RESP );
1144 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1145 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1146 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1147 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1148 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1149 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1150 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1151 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1152 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1153 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1154 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1155 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1156 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1157 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1158 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1159 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1160 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1161 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1162 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1163 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1164 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1165 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1166 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1167 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1168 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1169 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1170 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301171#ifdef FEATURE_WLAN_TDLS
1172 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1173 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1174#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001175 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1176 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1177 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1178 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1179 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1180 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1181 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1182 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1183 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1184 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1185 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1186 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1187 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1188 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1189 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1190 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1191 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1192 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1193 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1194 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1195 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1196 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1197 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1198 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1199 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001200 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001201 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1202 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1203 #ifdef FEATURE_WLAN_SCAN_PNO
1204 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1205 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1206 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1207 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001208#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001209 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001210#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001211 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1212 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1213 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1214 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1215 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1216 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1217 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1218 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001219 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301220#ifdef FEATURE_WLAN_BATCH_SCAN
1221 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1222#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001223 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301224 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301225 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301226#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1227 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1228 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1229 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1230#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301231#ifdef WLAN_FEATURE_EXTSCAN
1232 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1233 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1234 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1235 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1236 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1237 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1238 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1239 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1240 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1241 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1242 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1243 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1244 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1245
1246#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -07001247 default:
1248 return "Unknown WDI MessageId";
1249 }
1250}
1251
1252/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301253 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1254 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301255 @param capabilityBitmap - Base address of a 4 element Bitmap array
1256 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301257 @see
1258 @returns None
1259 */
1260void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1261{
Abhishek Singh08b60122014-02-04 18:05:23 +05301262 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301263 char capStr[512];
1264 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301265 for (j = 0; j < 4; j++) {
1266 for (i = 0; i < 32; i++) {
1267 if ((*(capabilityBitmap + j) & (1 << i))) {
1268 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301269 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1270 pCapStr += strlen("MCC");
1271 break;
1272 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1273 pCapStr += strlen("P2P");
1274 break;
1275 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1276 pCapStr += strlen("DOT11AC");
1277 break;
1278 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1279 pCapStr += strlen("SLM_SESSIONIZATION");
1280 break;
1281 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1282 pCapStr += strlen("DOT11AC_OPMODE");
1283 break;
1284 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1285 pCapStr += strlen("SAP32STA");
1286 break;
1287 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1288 pCapStr += strlen("TDLS");
1289 break;
1290 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1291 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1292 break;
1293 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1294 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1295 break;
1296 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1297 pCapStr += strlen("BEACON_OFFLOAD");
1298 break;
1299 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1300 pCapStr += strlen("SCAN_OFFLOAD");
1301 break;
1302 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1303 pCapStr += strlen("ROAM_OFFLOAD");
1304 break;
1305 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1306 pCapStr += strlen("BCN_MISS_OFFLOAD");
1307 break;
1308 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1309 pCapStr += strlen("STA_POWERSAVE");
1310 break;
1311 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1312 pCapStr += strlen("AP_UAPSD");
1313 break;
1314 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1315 pCapStr += strlen("AP_DFS");
1316 break;
1317 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1318 pCapStr += strlen("BLOCKACK");
1319 break;
1320 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1321 pCapStr += strlen("PHY_ERR");
1322 break;
1323 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1324 pCapStr += strlen("BCN_FILTER");
1325 break;
1326 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1327 pCapStr += strlen("RTT");
1328 break;
1329 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1330 pCapStr += strlen("RATECTRL");
1331 break;
1332 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1333 pCapStr += strlen("WOW");
1334 break;
1335 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1336 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1337 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301338 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1339 pCapStr += strlen("FW_IN_TX_PATH");
1340 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301341 case HT40_OBSS_SCAN:
1342 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1343 "%s", "HT40_OBSS_SCAN");
1344 pCapStr += strlen("HT40_OBSS_SCAN");
1345 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301346 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1347 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1348 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1349 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1350 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301351 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1352 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1353 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301354 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1355 pCapStr += strlen("CH_SWITCH_V1");
1356 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301357#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1358 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1359 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1360 break;
1361#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301362#ifdef WLAN_FEATURE_EXTSCAN
1363 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1364 pCapStr += strlen("EXTENDED_SCAN");
1365 break;
1366#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301367 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1368 pCapStr += strlen("MU_MIMO");
1369 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301370
Abhishek Singh08b60122014-02-04 18:05:23 +05301371 }
1372 *pCapStr++ = ',';
1373 *pCapStr++ = ' ';
1374 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301375 }
1376 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301377 pCapStr -= 2;
1378 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301379 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301381}
1382
1383/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001384 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001385
1386 @param halStatusId: HAL status Id
1387
1388 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001389 @return Result of the function call
1390*/
1391static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1392{
1393 switch (halStatusId)
1394 {
1395 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1396 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1397 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1398 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1399 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1400 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1401 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1402 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1403 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1404 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1405 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1406 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1407 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1408 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1409 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1410 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1411 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1412 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1413 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1414 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1415 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1416 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1417 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1418 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1419 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1420 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1421 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1422 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1423 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1424 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1425 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1426 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1427 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1428 default:
1429 return "Unknown HAL status";
1430 }
1431}
1432
Jeff Johnsone7245742012-09-05 17:12:55 -07001433/*========================================================================
1434
Jeff Johnson295189b2012-06-20 16:38:30 -07001435 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001436
Jeff Johnson295189b2012-06-20 16:38:30 -07001437==========================================================================*/
1438
1439/**
1440 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001441
Jeff Johnson295189b2012-06-20 16:38:30 -07001442 DAL will allocate all the resources it needs. It will open PAL, it will also
1443 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001444 DXE/SMD or any other drivers that they need.
1445
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301446 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001447 ppWDIGlobalCtx: output pointer of Global Context
1448 pWdiDevCapability: output pointer of device capability
1449
1450 @return Result of the function call
1451*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001452WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001453WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001454(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301455 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001456 void** ppWDIGlobalCtx,
1457 WDI_DeviceCapabilityType* pWdiDevCapability,
1458 unsigned int driverType
1459)
1460{
1461 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001462 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001463 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001464 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1466
1467 /*---------------------------------------------------------------------
1468 Sanity check
1469 ---------------------------------------------------------------------*/
1470 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1471 {
1472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1473 "Invalid input parameters in WDI_Init");
1474
Jeff Johnsone7245742012-09-05 17:12:55 -07001475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001476 }
1477
1478 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001479 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001480 ---------------------------------------------------------------------*/
1481 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1482 {
1483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1484 "WDI module already initialized - return");
1485
Jeff Johnsone7245742012-09-05 17:12:55 -07001486 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001487 }
1488
1489 /*Module is now initialized - this flag is to ensure the fact that multiple
1490 init will not happen on WDI
1491 !! - potential race does exist because read and set are not atomic,
1492 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001493 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001494
1495 /*Setup the control block */
1496 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301497 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001498
1499 /*Setup the STA Table*/
1500 wdiStatus = WDI_STATableInit(&gWDICb);
1501 if ( WDI_STATUS_SUCCESS != wdiStatus )
1502 {
1503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1504 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001505 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001506 goto fail_STATableInit;
1507 }
1508
1509 /*------------------------------------------------------------------------
1510 Open the PAL
1511 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301512 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001513 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1514 {
1515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1516 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001517 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001518 goto fail_wpalOpen;
1519 }
1520
1521 /*Initialize main synchro mutex - it will be used to ensure integrity of
1522 the main WDI Control Block*/
1523 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1524 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1525 {
1526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1527 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001528 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001529 goto fail_mutex;
1530 }
1531
1532 /*Initialize the response timer - it will be used to time all messages
1533 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001534 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1535 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001536 &gWDICb);
1537 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1538 {
1539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1540 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001541 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001542 goto fail_timer;
1543 }
1544
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001545 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1546 WDI_SsrTimerCB,
1547 &gWDICb);
1548 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1549 {
1550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1551 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001552 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001553 goto fail_timer2;
1554 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001555 /* Initialize the WDI Pending Request Queue*/
1556 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1557 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1558 {
1559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1560 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001561 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001562 goto fail_pend_queue;
1563 }
1564
1565 /*Init WDI Pending Assoc Id Queue */
1566 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1567 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1568 {
1569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1570 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001571 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001572 goto fail_assoc_queue;
1573 }
1574
1575 /*Initialize the BSS sessions pending Queue */
1576 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1577 {
1578 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1579 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1580 {
1581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1582 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001583 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001584 goto fail_bss_queue;
1585 }
1586 }
1587
1588 /*Indicate the control block is sufficiently initialized for callbacks*/
1589 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1590
1591 /*------------------------------------------------------------------------
1592 Initialize the Data Path Utility Module
1593 ------------------------------------------------------------------------*/
1594 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1595 if ( WDI_STATUS_SUCCESS != wdiStatus )
1596 {
1597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1598 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001599 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001600 goto fail_dp_util_init;
1601 }
1602
1603 /* Init Set power state event */
1604 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001605 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001606 {
1607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1608 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001609 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001610 goto fail_power_event;
1611 }
1612
1613 /* Init WCTS action event */
1614 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001615 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001616 {
1617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1618 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001619 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001620 goto fail_wcts_event;
1621 }
1622
1623 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001624 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001625 ------------------------------------------------------------------------*/
1626 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1627 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001628 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001629 wctsCBs.wctsRxMsgCBData = &gWDICb;
1630
Jeff Johnsone7245742012-09-05 17:12:55 -07001631 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001632 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001633 WDI_CT_CHANNEL_SIZE,
1634 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001635
1636 if ( NULL == gWDICb.wctsHandle )
1637 {
1638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001639 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001640 goto fail_wcts_open;
1641 }
1642
1643 gWDICb.driverMode = (tDriverType)driverType;
1644 /* FTM mode not need to open Transport Driver */
1645 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001646 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001647 /*------------------------------------------------------------------------
1648 Open the Data Transport
1649 ------------------------------------------------------------------------*/
1650 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1651 {
1652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001653 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001654 goto fail_wdts_open;
1655 }
1656 }
1657
1658 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001659 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001660
1661 /*Send the context as a ptr to the global WDI Control Block*/
1662 *ppWDIGlobalCtx = &gWDICb;
1663
1664 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001665 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001666 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1667 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1668 return WDI_STATUS_SUCCESS;
1669
1670 /* ERROR handlers
1671 Undo everything that completed successfully */
1672
1673 fail_wdts_open:
1674 {
1675 wpt_status eventStatus;
1676
1677 /* Closing WCTS in this scenario is tricky since it has to close
1678 the SMD channel and then we get notified asynchronously when
1679 the channel has been closed. So we take some of the logic from
1680 the "normal" close procedure in WDI_Close()
1681 */
1682
1683 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001684 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001685 {
1686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001687 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001688 }
1689
1690 WCTS_CloseTransport(gWDICb.wctsHandle);
1691
1692 /* Wait for WCTS to close the control transport. If we were able
1693 to reset the event flag, then we'll wait for the event,
1694 otherwise we'll wait for a maximum amount of time required for
1695 the channel to be closed */
1696 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1697 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001698 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001699 WDI_WCTS_ACTION_TIMEOUT);
1700 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1701 {
1702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001703 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001704 }
1705 }
1706 else
1707 {
1708 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1709 }
1710 }
1711 fail_wcts_open:
1712 wpalEventDelete(&gWDICb.wctsActionEvent);
1713 fail_wcts_event:
1714 wpalEventDelete(&gWDICb.setPowerStateEvent);
1715 fail_power_event:
1716 WDI_DP_UtilsExit(&gWDICb);
1717 fail_dp_util_init:
1718 gWDICb.magic = 0;
1719 fail_bss_queue:
1720 /* entries 0 thru i-1 were successfully initialized */
1721 while (0 < i)
1722 {
1723 i--;
1724 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1725 }
1726 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1727 fail_assoc_queue:
1728 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1729 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001730 wpalTimerDelete(&gWDICb.ssrTimer);
1731 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001732 wpalTimerDelete(&gWDICb.wptResponseTimer);
1733 fail_timer:
1734 wpalMutexDelete(&gWDICb.wptMutex);
1735 fail_mutex:
1736 wpalClose(gWDICb.pPALContext);
1737 fail_wpalOpen:
1738 WDI_STATableClose(&gWDICb);
1739 fail_STATableInit:
1740 gWDIInitialized = eWLAN_PAL_FALSE;
1741
1742 return WDI_STATUS_E_FAILURE;
1743
1744}/*WDI_Init*/;
1745
1746/**
1747 @brief WDI_Start will be called when the upper MAC is ready to
1748 commence operation with the WLAN Device. Upon the call
1749 of this API the WLAN DAL will pack and send a HAL Start
1750 message to the lower RIVA sub-system if the SMD channel
1751 has been fully opened and the RIVA subsystem is up.
1752
1753 If the RIVA sub-system is not yet up and running DAL
1754 will queue the request for Open and will wait for the
1755 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001756 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001757
1758 WDI_Init must have been called.
1759
Jeff Johnsone7245742012-09-05 17:12:55 -07001760 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001761 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001762
Jeff Johnson295189b2012-06-20 16:38:30 -07001763 wdiStartRspCb: callback for passing back the response of
1764 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001765
Jeff Johnson295189b2012-06-20 16:38:30 -07001766 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001767 callback
1768
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 @see WDI_Start
1770 @return Result of the function call
1771*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001772WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001773WDI_Start
1774(
1775 WDI_StartReqParamsType* pwdiStartParams,
1776 WDI_StartRspCb wdiStartRspCb,
1777 void* pUserData
1778)
1779{
1780 WDI_EventInfoType wdiEventData;
1781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1782
1783 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001784 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001785 ------------------------------------------------------------------------*/
1786 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1787 {
1788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1789 "WDI API call before module is initialized - Fail request");
1790
Jeff Johnsone7245742012-09-05 17:12:55 -07001791 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001792 }
1793
1794 /*------------------------------------------------------------------------
1795 Fill in Event data and post to the Main FSM
1796 ------------------------------------------------------------------------*/
1797 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001798 wdiEventData.pEventData = pwdiStartParams;
1799 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1800 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001801 wdiEventData.pUserData = pUserData;
1802
1803 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1804
1805}/*WDI_Start*/
1806
1807/**
1808 @brief WDI_Stop will be called when the upper MAC is ready to
1809 stop any operation with the WLAN Device. Upon the call
1810 of this API the WLAN DAL will pack and send a HAL Stop
1811 message to the lower RIVA sub-system if the DAL Core is
1812 in started state.
1813
1814 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001815
1816 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001817
1818 WDI_Start must have been called.
1819
Jeff Johnsone7245742012-09-05 17:12:55 -07001820 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001821 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001822
Jeff Johnson295189b2012-06-20 16:38:30 -07001823 wdiStopRspCb: callback for passing back the response of
1824 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001825
Jeff Johnson295189b2012-06-20 16:38:30 -07001826 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001827 callback
1828
Jeff Johnson295189b2012-06-20 16:38:30 -07001829 @see WDI_Start
1830 @return Result of the function call
1831*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001833WDI_Stop
1834(
1835 WDI_StopReqParamsType* pwdiStopParams,
1836 WDI_StopRspCb wdiStopRspCb,
1837 void* pUserData
1838)
1839{
1840 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001841 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1843
1844 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001845 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001846 ------------------------------------------------------------------------*/
1847 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1848 {
1849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1850 "WDI API call before module is initialized - Fail request");
1851
Jeff Johnsone7245742012-09-05 17:12:55 -07001852 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001853 }
1854
Jeff Johnson43971f52012-07-17 12:26:56 -07001855 /*Access to the global state must be locked before cleaning */
1856 wpalMutexAcquire(&pWDICtx->wptMutex);
1857
1858 /*Clear all pending request*/
1859 WDI_ClearPendingRequests(pWDICtx);
1860
1861 /*We have completed cleaning unlock now*/
1862 wpalMutexRelease(&pWDICtx->wptMutex);
1863
Jeff Johnson295189b2012-06-20 16:38:30 -07001864 /* Free the global variables */
1865 wpalMemoryFree(gpHostWlanFeatCaps);
1866 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001867 gpHostWlanFeatCaps = NULL;
1868 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001869
1870 /*------------------------------------------------------------------------
1871 Fill in Event data and post to the Main FSM
1872 ------------------------------------------------------------------------*/
1873 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001874 wdiEventData.pEventData = pwdiStopParams;
1875 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1876 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001877 wdiEventData.pUserData = pUserData;
1878
1879 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1880
1881}/*WDI_Stop*/
1882
1883
1884
1885/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001886 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001887 needs to interact with DAL. DAL will free its control
1888 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001889
1890 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001891
1892 WDI_Stop must have been called.
1893
1894 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001895
Jeff Johnson295189b2012-06-20 16:38:30 -07001896 @see WDI_Stop
1897 @return Result of the function call
1898*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001899WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001900WDI_Close
1901(
1902 void
1903)
1904{
1905 wpt_uint8 i;
1906 WDI_EventInfoType wdiEventData;
1907 wpt_status wptStatus;
1908 wpt_status eventStatus;
1909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1910
1911 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001912 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001913 ------------------------------------------------------------------------*/
1914 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1915 {
1916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1917 "WDI API call before module is initialized - Fail request");
1918
Jeff Johnsone7245742012-09-05 17:12:55 -07001919 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001920 }
1921
1922 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1923 (the control transport will be closed by the FSM and we'll want
1924 to wait until that completes)*/
1925 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001926 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001927 {
1928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001929 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001930 /* fall through and try to finish closing via the FSM */
1931 }
1932
1933 /*------------------------------------------------------------------------
1934 Fill in Event data and post to the Main FSM
1935 ------------------------------------------------------------------------*/
1936 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001937 wdiEventData.pEventData = NULL;
1938 wdiEventData.uEventDataSize = 0;
1939 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001940 wdiEventData.pUserData = NULL;
1941
1942 gWDIInitialized = eWLAN_PAL_FALSE;
1943
1944 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1945
1946 /*Wait for WCTS to close the control transport
1947 (but only if we were able to reset the event flag*/
1948 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1949 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001950 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001951 WDI_WCTS_ACTION_TIMEOUT);
1952 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1953 {
1954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001955 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001956 }
1957 }
1958
1959 /* Destroy the WCTS action event */
1960 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1961 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1962 {
1963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1964 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001965 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001966 }
1967
1968 /* Destroy the Set Power State event */
1969 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1970 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1971 {
1972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1973 "WDI Close failed to destroy an event");
1974
Jeff Johnsone7245742012-09-05 17:12:55 -07001975 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001976 }
1977
1978 /*------------------------------------------------------------------------
1979 Closes the Data Path Utility Module
1980 ------------------------------------------------------------------------*/
1981 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1982 {
1983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1984 "WDI Init failed to close the DP Util Module");
1985
Jeff Johnsone7245742012-09-05 17:12:55 -07001986 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001987 }
1988
1989 /*destroy the BSS sessions pending Queue */
1990 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1991 {
1992 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1993 }
1994
1995 /* destroy the WDI Pending Assoc Id Request Queue*/
1996 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1997
1998 /* destroy the WDI Pending Request Queue*/
1999 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002000
Jeff Johnson295189b2012-06-20 16:38:30 -07002001 /*destroy the response timer */
2002 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2003
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002004 /*destroy the SSR timer */
2005 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2006
Jeff Johnson295189b2012-06-20 16:38:30 -07002007 /*invalidate the main synchro mutex */
2008 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2009 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2010 {
2011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2012 "Failed to delete mutex %d", wptStatus);
2013 WDI_ASSERT(0);
2014 }
2015
2016 /*Clear control block. note that this will clear the "magic"
2017 which will inhibit all asynchronous callbacks*/
2018 WDI_CleanCB(&gWDICb);
2019
2020 return wptStatus;
2021
2022}/*WDI_Close*/
2023
2024/**
2025 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2026 This will do most of the WDI stop & close
2027 operations without doing any handshake with Riva
2028
2029 This will also make sure that the control transport
2030 will NOT be closed.
2031
2032 This request will not be queued.
2033
2034
2035 WDI_Start must have been called.
2036
2037 @param closeTransport: Close control channel if this is set
2038
2039 @return Result of the function call
2040*/
2041WDI_Status
2042WDI_Shutdown
2043(
2044 wpt_boolean closeTransport
2045)
2046{
2047 WDI_EventInfoType wdiEventData;
2048 wpt_status wptStatus;
2049 int i = 0;
2050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2051
2052 /*------------------------------------------------------------------------
2053 Sanity Check
2054 ------------------------------------------------------------------------*/
2055 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2056 {
2057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2058 "WDI API call before module is initialized - Fail request");
2059
2060 return WDI_STATUS_E_NOT_ALLOWED;
2061 }
2062
2063 /*------------------------------------------------------------------------
2064 Fill in Event data and post to the Main FSM
2065 ------------------------------------------------------------------------*/
2066 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2067 wdiEventData.pEventData = NULL;
2068 wdiEventData.uEventDataSize = 0;
2069
2070 /* Shutdown will not be queued, if the state is busy timer will be
2071 * stopped & this message will be processed.*/
2072 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2073 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2074 {
2075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002076 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002077 }
2078 /* Destroy the Set Power State event */
2079 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2080 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2081 {
2082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2083 "WDI Close failed to destroy an event");
2084
2085 WDI_ASSERT(0);
2086 }
2087 /*------------------------------------------------------------------------
2088 Closes the Data Path Utility Module
2089 ------------------------------------------------------------------------*/
2090 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2091 {
2092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2093 "WDI Init failed to close the DP Util Module");
2094
2095 WDI_ASSERT(0);
2096 }
2097 if ( closeTransport )
2098 {
2099 /* Close control transport, called from module unload */
2100 WCTS_CloseTransport(gWDICb.wctsHandle);
2101 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002102 else
2103 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002104 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002105 the pending messages in the transport queue */
2106 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2107 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002108 /*destroy the BSS sessions pending Queue */
2109 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2110 {
2111 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2112 }
2113
2114 /* destroy the WDI Pending Assoc Id Request Queue*/
2115 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2116 /* destroy the WDI Pending Request Queue*/
2117 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2118 /*destroy the response timer */
2119 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002120 /*destroy the SSR timer */
2121 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002122
2123 /*invalidate the main synchro mutex */
2124 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2125 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2126 {
2127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002128 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002129 WDI_ASSERT(0);
2130 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002131 /* Free the global variables */
2132 wpalMemoryFree(gpHostWlanFeatCaps);
2133 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002134 gpHostWlanFeatCaps = NULL;
2135 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002136 /*Clear control block. note that this will clear the "magic"
2137 which will inhibit all asynchronous callbacks*/
2138 WDI_CleanCB(&gWDICb);
2139 return wptStatus;
2140
2141}/*WDI_Shutdown*/
2142
2143
Jeff Johnsone7245742012-09-05 17:12:55 -07002144/*========================================================================
2145
Jeff Johnson295189b2012-06-20 16:38:30 -07002146 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002147
Jeff Johnson295189b2012-06-20 16:38:30 -07002148==========================================================================*/
2149
2150/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002151 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002152 the WLAN Device to get ready for a scan procedure. Upon
2153 the call of this API the WLAN DAL will pack and send a
2154 HAL Init Scan request message to the lower RIVA
2155 sub-system if DAL is in state STARTED.
2156
2157 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002158 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002159
2160 WDI_Start must have been called.
2161
2162 @param wdiInitScanParams: the init scan parameters as specified
2163 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002164
Jeff Johnson295189b2012-06-20 16:38:30 -07002165 wdiInitScanRspCb: callback for passing back the response
2166 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002167
Jeff Johnson295189b2012-06-20 16:38:30 -07002168 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002169 callback
2170
Jeff Johnson295189b2012-06-20 16:38:30 -07002171 @see WDI_Start
2172 @return Result of the function call
2173*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002174WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002175WDI_InitScanReq
2176(
2177 WDI_InitScanReqParamsType* pwdiInitScanParams,
2178 WDI_InitScanRspCb wdiInitScanRspCb,
2179 void* pUserData
2180)
2181{
2182 WDI_EventInfoType wdiEventData;
2183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2184
2185 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002186 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002187 ------------------------------------------------------------------------*/
2188 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2189 {
2190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2191 "WDI API call before module is initialized - Fail request");
2192
Jeff Johnsone7245742012-09-05 17:12:55 -07002193 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002194 }
2195
2196 /*------------------------------------------------------------------------
2197 Fill in Event data and post to the Main FSM
2198 ------------------------------------------------------------------------*/
2199 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002200 wdiEventData.pEventData = pwdiInitScanParams;
2201 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2202 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002203 wdiEventData.pUserData = pUserData;
2204
2205 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2206
2207}/*WDI_InitScanReq*/
2208
2209/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002210 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002211 wishes to change the Scan channel on the WLAN Device.
2212 Upon the call of this API the WLAN DAL will pack and
2213 send a HAL Start Scan request message to the lower RIVA
2214 sub-system if DAL is in state STARTED.
2215
2216 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002217 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002218
2219 WDI_InitScanReq must have been called.
2220
Jeff Johnsone7245742012-09-05 17:12:55 -07002221 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002222 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002223
Jeff Johnson295189b2012-06-20 16:38:30 -07002224 wdiStartScanRspCb: callback for passing back the
2225 response of the start scan operation received from the
2226 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002227
Jeff Johnson295189b2012-06-20 16:38:30 -07002228 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002229 callback
2230
Jeff Johnson295189b2012-06-20 16:38:30 -07002231 @see WDI_InitScanReq
2232 @return Result of the function call
2233*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002234WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002235WDI_StartScanReq
2236(
2237 WDI_StartScanReqParamsType* pwdiStartScanParams,
2238 WDI_StartScanRspCb wdiStartScanRspCb,
2239 void* pUserData
2240)
2241{
2242 WDI_EventInfoType wdiEventData;
2243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2244
2245 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002246 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002247 ------------------------------------------------------------------------*/
2248 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2249 {
2250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2251 "WDI API call before module is initialized - Fail request");
2252
Jeff Johnsone7245742012-09-05 17:12:55 -07002253 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002254 }
2255
2256 /*------------------------------------------------------------------------
2257 Fill in Event data and post to the Main FSM
2258 ------------------------------------------------------------------------*/
2259 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002260 wdiEventData.pEventData = pwdiStartScanParams;
2261 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2262 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002263 wdiEventData.pUserData = pUserData;
2264
2265 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2266
2267}/*WDI_StartScanReq*/
2268
2269
2270/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002271 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002272 wants to end scanning for a particular channel that it
2273 had set before by calling Scan Start on the WLAN Device.
2274 Upon the call of this API the WLAN DAL will pack and
2275 send a HAL End Scan request message to the lower RIVA
2276 sub-system if DAL is in state STARTED.
2277
2278 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002279 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002280
2281 WDI_StartScanReq must have been called.
2282
Jeff Johnsone7245742012-09-05 17:12:55 -07002283 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002284 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002285
Jeff Johnson295189b2012-06-20 16:38:30 -07002286 wdiEndScanRspCb: callback for passing back the response
2287 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002288
Jeff Johnson295189b2012-06-20 16:38:30 -07002289 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002290 callback
2291
Jeff Johnson295189b2012-06-20 16:38:30 -07002292 @see WDI_StartScanReq
2293 @return Result of the function call
2294*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002295WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002296WDI_EndScanReq
2297(
2298 WDI_EndScanReqParamsType* pwdiEndScanParams,
2299 WDI_EndScanRspCb wdiEndScanRspCb,
2300 void* pUserData
2301)
2302{
2303 WDI_EventInfoType wdiEventData;
2304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2305
2306 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002307 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002308 ------------------------------------------------------------------------*/
2309 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2310 {
2311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2312 "WDI API call before module is initialized - Fail request");
2313
Jeff Johnsone7245742012-09-05 17:12:55 -07002314 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002315 }
2316
2317 /*------------------------------------------------------------------------
2318 Fill in Event data and post to the Main FSM
2319 ------------------------------------------------------------------------*/
2320 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002321 wdiEventData.pEventData = pwdiEndScanParams;
2322 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2323 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002324 wdiEventData.pUserData = pUserData;
2325
2326 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2327
2328}/*WDI_EndScanReq*/
2329
2330
2331/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002332 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002333 completed the scan process on the WLAN Device. Upon the
2334 call of this API the WLAN DAL will pack and send a HAL
2335 Finish Scan Request request message to the lower RIVA
2336 sub-system if DAL is in state STARTED.
2337
2338 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002339 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002340
2341 WDI_InitScanReq must have been called.
2342
Jeff Johnsone7245742012-09-05 17:12:55 -07002343 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002344 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002345
Jeff Johnson295189b2012-06-20 16:38:30 -07002346 wdiFinishScanRspCb: callback for passing back the
2347 response of the finish scan operation received from the
2348 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002349
Jeff Johnson295189b2012-06-20 16:38:30 -07002350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002351 callback
2352
Jeff Johnson295189b2012-06-20 16:38:30 -07002353 @see WDI_InitScanReq
2354 @return Result of the function call
2355*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002356WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002357WDI_FinishScanReq
2358(
2359 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2360 WDI_FinishScanRspCb wdiFinishScanRspCb,
2361 void* pUserData
2362)
2363{
2364 WDI_EventInfoType wdiEventData;
2365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2366
2367 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002368 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002369 ------------------------------------------------------------------------*/
2370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2371 {
2372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2373 "WDI API call before module is initialized - Fail request");
2374
Jeff Johnsone7245742012-09-05 17:12:55 -07002375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002376 }
2377
2378 /*------------------------------------------------------------------------
2379 Fill in Event data and post to the Main FSM
2380 ------------------------------------------------------------------------*/
2381 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002382 wdiEventData.pEventData = pwdiFinishScanParams;
2383 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2384 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002385 wdiEventData.pUserData = pUserData;
2386
2387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2388
2389}/*WDI_FinishScanReq*/
2390
Jeff Johnsone7245742012-09-05 17:12:55 -07002391/*========================================================================
2392
Jeff Johnson295189b2012-06-20 16:38:30 -07002393 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002394
Jeff Johnson295189b2012-06-20 16:38:30 -07002395==========================================================================*/
2396
2397/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002398 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002399 to start an association procedure to a BSS. Upon the
2400 call of this API the WLAN DAL will pack and send a HAL
2401 Join request message to the lower RIVA sub-system if
2402 DAL is in state STARTED.
2403
2404 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002405 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002406
2407 WDI_Start must have been called.
2408
Jeff Johnsone7245742012-09-05 17:12:55 -07002409 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002410 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002411
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 wdiJoinRspCb: callback for passing back the response of
2413 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002414
Jeff Johnson295189b2012-06-20 16:38:30 -07002415 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002416 callback
2417
Jeff Johnson295189b2012-06-20 16:38:30 -07002418 @see WDI_Start
2419 @return Result of the function call
2420*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002421WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002422WDI_JoinReq
2423(
2424 WDI_JoinReqParamsType* pwdiJoinParams,
2425 WDI_JoinRspCb wdiJoinRspCb,
2426 void* pUserData
2427)
2428{
2429 WDI_EventInfoType wdiEventData;
2430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2431
2432 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002433 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002434 ------------------------------------------------------------------------*/
2435 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2436 {
2437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2438 "WDI API call before module is initialized - Fail request");
2439
Jeff Johnsone7245742012-09-05 17:12:55 -07002440 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002441 }
2442
2443 /*------------------------------------------------------------------------
2444 Fill in Event data and post to the Main FSM
2445 ------------------------------------------------------------------------*/
2446 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002447 wdiEventData.pEventData = pwdiJoinParams;
2448 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2449 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002450 wdiEventData.pUserData = pUserData;
2451
2452 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2453
2454}/*WDI_JoinReq*/
2455
2456/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002457 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002458 wishes to configure the newly acquired or in process of
2459 being acquired BSS to the HW . Upon the call of this API
2460 the WLAN DAL will pack and send a HAL Config BSS request
2461 message to the lower RIVA sub-system if DAL is in state
2462 STARTED.
2463
2464 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002465 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002466
2467 WDI_JoinReq must have been called.
2468
Jeff Johnsone7245742012-09-05 17:12:55 -07002469 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002470 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002471
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 wdiConfigBSSRspCb: callback for passing back the
2473 response of the config BSS operation received from the
2474 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002475
Jeff Johnson295189b2012-06-20 16:38:30 -07002476 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002477 callback
2478
Jeff Johnson295189b2012-06-20 16:38:30 -07002479 @see WDI_JoinReq
2480 @return Result of the function call
2481*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002482WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002483WDI_ConfigBSSReq
2484(
2485 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2486 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2487 void* pUserData
2488)
2489{
2490 WDI_EventInfoType wdiEventData;
2491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2492
2493 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002494 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002495 ------------------------------------------------------------------------*/
2496 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2497 {
2498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2499 "WDI API call before module is initialized - Fail request");
2500
Jeff Johnsone7245742012-09-05 17:12:55 -07002501 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002502 }
2503
2504 /*------------------------------------------------------------------------
2505 Fill in Event data and post to the Main FSM
2506 ------------------------------------------------------------------------*/
2507 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002508 wdiEventData.pEventData = pwdiConfigBSSParams;
2509 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2510 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002511 wdiEventData.pUserData = pUserData;
2512
2513 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2514
2515}/*WDI_ConfigBSSReq*/
2516
2517/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002518 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002519 disassociating from the BSS and wishes to notify HW.
2520 Upon the call of this API the WLAN DAL will pack and
2521 send a HAL Del BSS request message to the lower RIVA
2522 sub-system if DAL is in state STARTED.
2523
2524 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002525 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002526
2527 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2528
Jeff Johnsone7245742012-09-05 17:12:55 -07002529 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002530 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002531
Jeff Johnson295189b2012-06-20 16:38:30 -07002532 wdiDelBSSRspCb: callback for passing back the response
2533 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002534
Jeff Johnson295189b2012-06-20 16:38:30 -07002535 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002536 callback
2537
2538 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002539 @return Result of the function call
2540*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002541WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002542WDI_DelBSSReq
2543(
2544 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2545 WDI_DelBSSRspCb wdiDelBSSRspCb,
2546 void* pUserData
2547)
2548{
2549 WDI_EventInfoType wdiEventData;
2550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2551
2552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002553 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002554 ------------------------------------------------------------------------*/
2555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2556 {
2557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2558 "WDI API call before module is initialized - Fail request");
2559
Jeff Johnsone7245742012-09-05 17:12:55 -07002560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002561 }
2562
2563 /*------------------------------------------------------------------------
2564 Fill in Event data and post to the Main FSM
2565 ------------------------------------------------------------------------*/
2566 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002567 wdiEventData.pEventData = pwdiDelBSSParams;
2568 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2569 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002570 wdiEventData.pUserData = pUserData;
2571
2572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2573
2574}/*WDI_DelBSSReq*/
2575
2576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002577 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002578 associated to a BSS and wishes to configure HW for
2579 associated state. Upon the call of this API the WLAN DAL
2580 will pack and send a HAL Post Assoc request message to
2581 the lower RIVA sub-system if DAL is in state STARTED.
2582
2583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002585
2586 WDI_JoinReq must have been called.
2587
2588 @param wdiPostAssocReqParams: the assoc parameters as specified
2589 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002590
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 wdiPostAssocRspCb: callback for passing back the
2592 response of the post assoc operation received from the
2593 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002594
Jeff Johnson295189b2012-06-20 16:38:30 -07002595 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002596 callback
2597
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 @see WDI_JoinReq
2599 @return Result of the function call
2600*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002601WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002602WDI_PostAssocReq
2603(
2604 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2605 WDI_PostAssocRspCb wdiPostAssocRspCb,
2606 void* pUserData
2607)
2608{
2609 WDI_EventInfoType wdiEventData;
2610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2611
2612 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002613 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002614 ------------------------------------------------------------------------*/
2615 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2616 {
2617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2618 "WDI API call before module is initialized - Fail request");
2619
Jeff Johnsone7245742012-09-05 17:12:55 -07002620 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002621 }
2622
2623 /*------------------------------------------------------------------------
2624 Fill in Event data and post to the Main FSM
2625 ------------------------------------------------------------------------*/
2626 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002627 wdiEventData.pEventData = pwdiPostAssocReqParams;
2628 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2629 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002630 wdiEventData.pUserData = pUserData;
2631
2632 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2633
2634}/*WDI_PostAssocReq*/
2635
2636/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002637 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002638 association with another STA has ended and the station
2639 must be deleted from HW. Upon the call of this API the
2640 WLAN DAL will pack and send a HAL Del STA request
2641 message to the lower RIVA sub-system if DAL is in state
2642 STARTED.
2643
2644 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002645 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002646
2647 WDI_PostAssocReq must have been called.
2648
Jeff Johnsone7245742012-09-05 17:12:55 -07002649 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002650 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002651
Jeff Johnson295189b2012-06-20 16:38:30 -07002652 wdiDelSTARspCb: callback for passing back the response
2653 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002654
Jeff Johnson295189b2012-06-20 16:38:30 -07002655 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002656 callback
2657
Jeff Johnson295189b2012-06-20 16:38:30 -07002658 @see WDI_PostAssocReq
2659 @return Result of the function call
2660*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002661WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002662WDI_DelSTAReq
2663(
2664 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2665 WDI_DelSTARspCb wdiDelSTARspCb,
2666 void* pUserData
2667)
2668{
2669 WDI_EventInfoType wdiEventData;
2670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2671
2672 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002673 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002674 ------------------------------------------------------------------------*/
2675 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2676 {
2677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2678 "WDI API call before module is initialized - Fail request");
2679
Jeff Johnsone7245742012-09-05 17:12:55 -07002680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002681 }
2682
2683 /*------------------------------------------------------------------------
2684 Fill in Event data and post to the Main FSM
2685 ------------------------------------------------------------------------*/
2686 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002687 wdiEventData.pEventData = pwdiDelSTAParams;
2688 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2689 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002690 wdiEventData.pUserData = pUserData;
2691
2692 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2693
2694}/*WDI_DelSTAReq*/
2695
Jeff Johnsone7245742012-09-05 17:12:55 -07002696/*========================================================================
2697
Jeff Johnson295189b2012-06-20 16:38:30 -07002698 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002699
Jeff Johnson295189b2012-06-20 16:38:30 -07002700==========================================================================*/
2701
2702/**
2703 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2704 install a BSS encryption key on the HW. Upon the call of this
2705 API the WLAN DAL will pack and send a Set BSS Key request
2706 message to the lower RIVA sub-system if DAL is in state
2707 STARTED.
2708
2709 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002710 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002711
2712 WDI_PostAssocReq must have been called.
2713
Jeff Johnsone7245742012-09-05 17:12:55 -07002714 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002715 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002716
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 wdiSetBSSKeyRspCb: callback for passing back the
2718 response of the set BSS Key operation received from the
2719 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002720
Jeff Johnson295189b2012-06-20 16:38:30 -07002721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002722 callback
2723
Jeff Johnson295189b2012-06-20 16:38:30 -07002724 @see WDI_PostAssocReq
2725 @return Result of the function call
2726*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002728WDI_SetBSSKeyReq
2729(
2730 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2731 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2732 void* pUserData
2733)
2734{
2735 WDI_EventInfoType wdiEventData;
2736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2737
2738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002740 ------------------------------------------------------------------------*/
2741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2742 {
2743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2744 "WDI API call before module is initialized - Fail request");
2745
Jeff Johnsone7245742012-09-05 17:12:55 -07002746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002747 }
2748
2749 /*------------------------------------------------------------------------
2750 Fill in Event data and post to the Main FSM
2751 ------------------------------------------------------------------------*/
2752 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002753 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2754 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2755 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002756 wdiEventData.pUserData = pUserData;
2757
2758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2759
2760}/*WDI_SetBSSKeyReq*/
2761
2762/**
2763 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2764 uninstall a BSS key from HW. Upon the call of this API the
2765 WLAN DAL will pack and send a HAL Remove BSS Key request
2766 message to the lower RIVA sub-system if DAL is in state
2767 STARTED.
2768
2769 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002770 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002771
2772 WDI_SetBSSKeyReq must have been called.
2773
Jeff Johnsone7245742012-09-05 17:12:55 -07002774 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002775 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002776
Jeff Johnson295189b2012-06-20 16:38:30 -07002777 wdiRemoveBSSKeyRspCb: callback for passing back the
2778 response of the remove BSS key operation received from
2779 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002780
Jeff Johnson295189b2012-06-20 16:38:30 -07002781 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002782 callback
2783
Jeff Johnson295189b2012-06-20 16:38:30 -07002784 @see WDI_SetBSSKeyReq
2785 @return Result of the function call
2786*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002787WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002788WDI_RemoveBSSKeyReq
2789(
2790 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2791 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2792 void* pUserData
2793)
2794{
2795 WDI_EventInfoType wdiEventData;
2796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2797
2798 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002799 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002800 ------------------------------------------------------------------------*/
2801 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2802 {
2803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2804 "WDI API call before module is initialized - Fail request");
2805
Jeff Johnsone7245742012-09-05 17:12:55 -07002806 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002807 }
2808
2809 /*------------------------------------------------------------------------
2810 Fill in Event data and post to the Main FSM
2811 ------------------------------------------------------------------------*/
2812 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002813 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2814 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2815 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002816 wdiEventData.pUserData = pUserData;
2817
2818 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2819
2820}/*WDI_RemoveBSSKeyReq*/
2821
2822
2823/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002824 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002825 ready to install a STA(ast) encryption key in HW. Upon
2826 the call of this API the WLAN DAL will pack and send a
2827 HAL Set STA Key request message to the lower RIVA
2828 sub-system if DAL is in state STARTED.
2829
2830 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002831 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002832
2833 WDI_PostAssocReq must have been called.
2834
Jeff Johnsone7245742012-09-05 17:12:55 -07002835 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002837
Jeff Johnson295189b2012-06-20 16:38:30 -07002838 wdiSetSTAKeyRspCb: callback for passing back the
2839 response of the set STA key operation received from the
2840 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002841
Jeff Johnson295189b2012-06-20 16:38:30 -07002842 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002843 callback
2844
Jeff Johnson295189b2012-06-20 16:38:30 -07002845 @see WDI_PostAssocReq
2846 @return Result of the function call
2847*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002848WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002849WDI_SetSTAKeyReq
2850(
2851 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2852 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2853 void* pUserData
2854)
2855{
2856 WDI_EventInfoType wdiEventData;
2857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2858
2859 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002860 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002861 ------------------------------------------------------------------------*/
2862 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2863 {
2864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2865 "WDI API call before module is initialized - Fail request");
2866
Jeff Johnsone7245742012-09-05 17:12:55 -07002867 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002868 }
2869
2870 /*------------------------------------------------------------------------
2871 Fill in Event data and post to the Main FSM
2872 ------------------------------------------------------------------------*/
2873 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002874 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2875 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2876 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002877 wdiEventData.pUserData = pUserData;
2878
2879 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2880
2881}/*WDI_SetSTAKeyReq*/
2882
2883
2884/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002885 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002886 wants to uninstall a previously set STA key in HW. Upon
2887 the call of this API the WLAN DAL will pack and send a
2888 HAL Remove STA Key request message to the lower RIVA
2889 sub-system if DAL is in state STARTED.
2890
2891 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002892 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002893
2894 WDI_SetSTAKeyReq must have been called.
2895
Jeff Johnsone7245742012-09-05 17:12:55 -07002896 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002898
Jeff Johnson295189b2012-06-20 16:38:30 -07002899 wdiRemoveSTAKeyRspCb: callback for passing back the
2900 response of the remove STA key operation received from
2901 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002902
Jeff Johnson295189b2012-06-20 16:38:30 -07002903 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002904 callback
2905
Jeff Johnson295189b2012-06-20 16:38:30 -07002906 @see WDI_SetSTAKeyReq
2907 @return Result of the function call
2908*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002909WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002910WDI_RemoveSTAKeyReq
2911(
2912 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2913 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2914 void* pUserData
2915)
2916{
2917 WDI_EventInfoType wdiEventData;
2918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2919
2920 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002921 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002922 ------------------------------------------------------------------------*/
2923 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2924 {
2925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2926 "WDI API call before module is initialized - Fail request");
2927
Jeff Johnsone7245742012-09-05 17:12:55 -07002928 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002929 }
2930
2931 /*------------------------------------------------------------------------
2932 Fill in Event data and post to the Main FSM
2933 ------------------------------------------------------------------------*/
2934 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002935 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2936 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2937 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002938 wdiEventData.pUserData = pUserData;
2939
2940 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2941
2942}/*WDI_RemoveSTAKeyReq*/
2943
2944
2945/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002946 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002947 wants to install a STA Bcast encryption key on the HW.
2948 Upon the call of this API the WLAN DAL will pack and
2949 send a HAL Start request message to the lower RIVA
2950 sub-system if DAL is in state STARTED.
2951
2952 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002953 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002954
2955 WDI_PostAssocReq must have been called.
2956
Jeff Johnsone7245742012-09-05 17:12:55 -07002957 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002958 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002959
Jeff Johnson295189b2012-06-20 16:38:30 -07002960 wdiSetSTABcastKeyRspCb: callback for passing back the
2961 response of the set BSS Key operation received from the
2962 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002963
Jeff Johnson295189b2012-06-20 16:38:30 -07002964 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002965 callback
2966
Jeff Johnson295189b2012-06-20 16:38:30 -07002967 @see WDI_PostAssocReq
2968 @return Result of the function call
2969*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002970WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002971WDI_SetSTABcastKeyReq
2972(
2973 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2974 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2975 void* pUserData
2976)
2977
2978{
2979 WDI_EventInfoType wdiEventData;
2980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2981
2982 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002983 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002984 ------------------------------------------------------------------------*/
2985 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2986 {
2987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2988 "WDI API call before module is initialized - Fail request");
2989
Jeff Johnsone7245742012-09-05 17:12:55 -07002990 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002991 }
2992
2993 /*------------------------------------------------------------------------
2994 Fill in Event data and post to the Main FSM
2995 ------------------------------------------------------------------------*/
2996 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002997 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2998 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2999 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003000 wdiEventData.pUserData = pUserData;
3001
3002 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3003
3004}/*WDI_SetSTABcastKeyReq*/
3005
3006/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003007 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003008 MAC wants to uninstall a STA Bcast key from HW. Upon the
3009 call of this API the WLAN DAL will pack and send a HAL
3010 Remove STA Bcast Key request message to the lower RIVA
3011 sub-system if DAL is in state STARTED.
3012
3013 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003014 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003015
3016 WDI_SetSTABcastKeyReq must have been called.
3017
Jeff Johnsone7245742012-09-05 17:12:55 -07003018 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003019 parameters as specified by the Device
3020 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003021
Jeff Johnson295189b2012-06-20 16:38:30 -07003022 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3023 response of the remove STA Bcast key operation received
3024 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003025
Jeff Johnson295189b2012-06-20 16:38:30 -07003026 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003027 callback
3028
Jeff Johnson295189b2012-06-20 16:38:30 -07003029 @see WDI_SetSTABcastKeyReq
3030 @return Result of the function call
3031*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003032WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003033WDI_RemoveSTABcastKeyReq
3034(
3035 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3036 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3037 void* pUserData
3038)
3039{
3040 WDI_EventInfoType wdiEventData;
3041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3042
3043 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003044 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003045 ------------------------------------------------------------------------*/
3046 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3047 {
3048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3049 "WDI API call before module is initialized - Fail request");
3050
Jeff Johnsone7245742012-09-05 17:12:55 -07003051 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003052 }
3053
3054 /*------------------------------------------------------------------------
3055 Fill in Event data and post to the Main FSM
3056 ------------------------------------------------------------------------*/
3057 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003058 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3059 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3060 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003061 wdiEventData.pUserData = pUserData;
3062
3063 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3064
3065}/*WDI_RemoveSTABcastKeyReq*/
3066
3067/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003068 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003069 MAC wants to set Max Tx Power to HW. Upon the
3070 call of this API the WLAN DAL will pack and send a HAL
3071 Remove STA Bcast Key request message to the lower RIVA
3072 sub-system if DAL is in state STARTED.
3073
3074 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003075 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003076
3077 WDI_SetSTABcastKeyReq must have been called.
3078
Jeff Johnsone7245742012-09-05 17:12:55 -07003079 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003080 parameters as specified by the Device
3081 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003082
Jeff Johnson295189b2012-06-20 16:38:30 -07003083 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3084 response of the remove STA Bcast key operation received
3085 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003086
Jeff Johnson295189b2012-06-20 16:38:30 -07003087 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003088 callback
3089
Jeff Johnson295189b2012-06-20 16:38:30 -07003090 @see WDI_SetMaxTxPowerReq
3091 @return Result of the function call
3092*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003093WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003094WDI_SetMaxTxPowerReq
3095(
3096 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3097 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3098 void* pUserData
3099)
3100{
3101 WDI_EventInfoType wdiEventData;
3102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3103
3104 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003105 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 ------------------------------------------------------------------------*/
3107 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3108 {
3109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3110 "WDI API call before module is initialized - Fail request");
3111
Jeff Johnsone7245742012-09-05 17:12:55 -07003112 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003113 }
3114
3115 /*------------------------------------------------------------------------
3116 Fill in Event data and post to the Main FSM
3117 ------------------------------------------------------------------------*/
3118 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003119 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3120 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3121 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003122 wdiEventData.pUserData = pUserData;
3123
3124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3125}
3126
schang86c22c42013-03-13 18:41:24 -07003127/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003128 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3129 MAC wants to set Max Tx Power to HW for specific band.
3130
3131 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3132
3133 wdiReqStatusCb: callback for passing back the
3134 response msg from the device
3135
3136 pUserData: user data will be passed back with the
3137 callback
3138
3139 @see WDI_SetMaxTxPowerPerBandReq
3140 @return Result of the function call
3141*/
3142WDI_Status
3143WDI_SetMaxTxPowerPerBandReq
3144(
3145 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3146 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3147 void* pUserData
3148)
3149{
3150 WDI_EventInfoType wdiEventData;
3151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3152
3153 /*------------------------------------------------------------------------
3154 Sanity Check
3155 ------------------------------------------------------------------------*/
3156 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3157 {
3158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3159 "WDI API call before module is initialized - Fail request");
3160
3161 return WDI_STATUS_E_NOT_ALLOWED;
3162 }
3163
3164 /*------------------------------------------------------------------------
3165 Fill in Event data and post to the Main FSM
3166 ------------------------------------------------------------------------*/
3167 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3168 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3169 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3170 wdiEventData.pCBfnc = wdiReqStatusCb;
3171 wdiEventData.pUserData = pUserData;
3172
3173 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3174}
3175
3176/**
schang86c22c42013-03-13 18:41:24 -07003177 @brief WDI_SetTxPowerReq will be called when the upper
3178 MAC wants to set Tx Power to HW.
3179 In state BUSY this request will be queued. Request won't
3180 be allowed in any other state.
3181
3182
3183 @param pwdiSetTxPowerParams: set TS Power parameters
3184 BSSID and target TX Power with dbm included
3185
3186 wdiReqStatusCb: callback for passing back the response
3187
3188 pUserData: user data will be passed back with the
3189 callback
3190
3191 @return Result of the function call
3192*/
3193WDI_Status
3194WDI_SetTxPowerReq
3195(
3196 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3197 WDA_SetTxPowerRspCb wdiReqStatusCb,
3198 void* pUserData
3199)
3200{
3201 WDI_EventInfoType wdiEventData;
3202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3203
3204 /*------------------------------------------------------------------------
3205 Sanity Check
3206 ------------------------------------------------------------------------*/
3207 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3208 {
3209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3210 "WDI API call before module is initialized - Fail request");
3211
3212 return WDI_STATUS_E_NOT_ALLOWED;
3213 }
3214
3215 /*------------------------------------------------------------------------
3216 Fill in Event data and post to the Main FSM
3217 ------------------------------------------------------------------------*/
3218 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3219 wdiEventData.pEventData = pwdiSetTxPowerParams;
3220 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3221 wdiEventData.pCBfnc = wdiReqStatusCb;
3222 wdiEventData.pUserData = pUserData;
3223
3224 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3225}
3226
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003227#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003228WDI_Status
3229WDI_TSMStatsReq
3230(
3231 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3232 WDI_TsmRspCb wdiReqStatusCb,
3233 void* pUserData
3234)
3235{
3236 WDI_EventInfoType wdiEventData;
3237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003238 /*------------------------------------------------------------------------
3239 Sanity Check
3240 ------------------------------------------------------------------------*/
3241 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3242 {
3243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3244 "WDI API call before module is initialized - Fail request");
3245
3246 return WDI_STATUS_E_NOT_ALLOWED;
3247 }
3248
3249 /*------------------------------------------------------------------------
3250 Fill in Event data and post to the Main FSM
3251 ------------------------------------------------------------------------*/
3252 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3253 wdiEventData.pEventData = pwdiTsmReqParams;
3254 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3255 wdiEventData.pCBfnc = wdiReqStatusCb;
3256 wdiEventData.pUserData = pUserData;
3257
3258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3259
3260}
3261#endif
3262
3263/*========================================================================
3264
3265 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003266
Jeff Johnson295189b2012-06-20 16:38:30 -07003267==========================================================================*/
3268
3269/**
3270 @brief WDI_AddTSReq will be called when the upper MAC to inform
3271 the device of a successful add TSpec negotiation. HW
3272 needs to receive the TSpec Info from the UMAC in order
3273 to configure properly the QoS data traffic. Upon the
3274 call of this API the WLAN DAL will pack and send a HAL
3275 Add TS request message to the lower RIVA sub-system if
3276 DAL is in state STARTED.
3277
3278 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003279 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003280
3281 WDI_PostAssocReq must have been called.
3282
3283 @param wdiAddTsReqParams: the add TS parameters as specified by
3284 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003285
Jeff Johnson295189b2012-06-20 16:38:30 -07003286 wdiAddTsRspCb: callback for passing back the response of
3287 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003288
Jeff Johnson295189b2012-06-20 16:38:30 -07003289 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003290 callback
3291
Jeff Johnson295189b2012-06-20 16:38:30 -07003292 @see WDI_PostAssocReq
3293 @return Result of the function call
3294*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003295WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003296WDI_AddTSReq
3297(
3298 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3299 WDI_AddTsRspCb wdiAddTsRspCb,
3300 void* pUserData
3301)
3302{
3303 WDI_EventInfoType wdiEventData;
3304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3305
3306 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003307 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003308 ------------------------------------------------------------------------*/
3309 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3310 {
3311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3312 "WDI API call before module is initialized - Fail request");
3313
Jeff Johnsone7245742012-09-05 17:12:55 -07003314 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003315 }
3316
3317 /*------------------------------------------------------------------------
3318 Fill in Event data and post to the Main FSM
3319 ------------------------------------------------------------------------*/
3320 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003321 wdiEventData.pEventData = pwdiAddTsReqParams;
3322 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3323 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003324 wdiEventData.pUserData = pUserData;
3325
3326 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3327
3328}/*WDI_AddTSReq*/
3329
3330
3331
3332/**
3333 @brief WDI_DelTSReq will be called when the upper MAC has ended
3334 admission on a specific AC. This is to inform HW that
3335 QoS traffic parameters must be rest. Upon the call of
3336 this API the WLAN DAL will pack and send a HAL Del TS
3337 request message to the lower RIVA sub-system if DAL is
3338 in state STARTED.
3339
3340 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003341 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003342
3343 WDI_AddTSReq must have been called.
3344
3345 @param wdiDelTsReqParams: the del TS parameters as specified by
3346 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003347
Jeff Johnson295189b2012-06-20 16:38:30 -07003348 wdiDelTsRspCb: callback for passing back the response of
3349 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003350
Jeff Johnson295189b2012-06-20 16:38:30 -07003351 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003352 callback
3353
Jeff Johnson295189b2012-06-20 16:38:30 -07003354 @see WDI_AddTSReq
3355 @return Result of the function call
3356*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003357WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003358WDI_DelTSReq
3359(
3360 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3361 WDI_DelTsRspCb wdiDelTsRspCb,
3362 void* pUserData
3363)
3364{
3365 WDI_EventInfoType wdiEventData;
3366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3367
3368 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003369 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003370 ------------------------------------------------------------------------*/
3371 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3372 {
3373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3374 "WDI API call before module is initialized - Fail request");
3375
Jeff Johnsone7245742012-09-05 17:12:55 -07003376 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003377 }
3378
3379 /*------------------------------------------------------------------------
3380 Fill in Event data and post to the Main FSM
3381 ------------------------------------------------------------------------*/
3382 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003383 wdiEventData.pEventData = pwdiDelTsReqParams;
3384 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3385 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003386 wdiEventData.pUserData = pUserData;
3387
3388 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3389
3390}/*WDI_DelTSReq*/
3391
3392
3393
3394/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003395 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003396 wishes to update the EDCA parameters used by HW for QoS
3397 data traffic. Upon the call of this API the WLAN DAL
3398 will pack and send a HAL Update EDCA Params request
3399 message to the lower RIVA sub-system if DAL is in state
3400 STARTED.
3401
3402 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003403 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003404
3405 WDI_PostAssocReq must have been called.
3406
Jeff Johnsone7245742012-09-05 17:12:55 -07003407 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003408 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003409
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 wdiUpdateEDCAParamsRspCb: callback for passing back the
3411 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003412
Jeff Johnson295189b2012-06-20 16:38:30 -07003413 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003414 callback
3415
Jeff Johnson295189b2012-06-20 16:38:30 -07003416 @see WDI_PostAssocReq
3417 @return Result of the function call
3418*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003419WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003420WDI_UpdateEDCAParams
3421(
3422 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3423 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3424 void* pUserData
3425)
3426{
3427 WDI_EventInfoType wdiEventData;
3428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3429
3430 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003431 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003432 ------------------------------------------------------------------------*/
3433 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3434 {
3435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3436 "WDI API call before module is initialized - Fail request");
3437
Jeff Johnsone7245742012-09-05 17:12:55 -07003438 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003439 }
3440
3441 /*------------------------------------------------------------------------
3442 Fill in Event data and post to the Main FSM
3443 ------------------------------------------------------------------------*/
3444 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003445 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3446 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3447 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003448 wdiEventData.pUserData = pUserData;
3449
3450 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3451
3452}/*WDI_UpdateEDCAParams*/
3453
3454
3455/**
3456 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3457 successfully a BA session and needs to notify the HW for
3458 the appropriate settings to take place. Upon the call of
3459 this API the WLAN DAL will pack and send a HAL Add BA
3460 request message to the lower RIVA sub-system if DAL is
3461 in state STARTED.
3462
3463 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003464 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003465
3466 WDI_PostAssocReq must have been called.
3467
3468 @param wdiAddBAReqParams: the add BA parameters as specified by
3469 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003470
Jeff Johnson295189b2012-06-20 16:38:30 -07003471 wdiAddBARspCb: callback for passing back the response of
3472 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003473
Jeff Johnson295189b2012-06-20 16:38:30 -07003474 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003475 callback
3476
Jeff Johnson295189b2012-06-20 16:38:30 -07003477 @see WDI_PostAssocReq
3478 @return Result of the function call
3479*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003480WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003481WDI_AddBASessionReq
3482(
3483 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3484 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3485 void* pUserData
3486)
3487{
3488 WDI_EventInfoType wdiEventData;
3489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3490
3491 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003492 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003493 ------------------------------------------------------------------------*/
3494 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3495 {
3496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3497 "WDI API call before module is initialized - Fail request");
3498
Jeff Johnsone7245742012-09-05 17:12:55 -07003499 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003500 }
3501
3502 /*------------------------------------------------------------------------
3503 Fill in Event data and post to the Main FSM
3504 ------------------------------------------------------------------------*/
3505 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003506 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3507 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3508 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003509 wdiEventData.pUserData = pUserData;
3510
3511 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3512
3513}/*WDI_AddBASessionReq*/
3514
3515/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003516 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003517 inform HW that it has deleted a previously created BA
3518 session. Upon the call of this API the WLAN DAL will
3519 pack and send a HAL Del BA request message to the lower
3520 RIVA sub-system if DAL is in state STARTED.
3521
3522 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003523 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003524
3525 WDI_AddBAReq must have been called.
3526
3527 @param wdiDelBAReqParams: the del BA parameters as specified by
3528 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003529
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 wdiDelBARspCb: callback for passing back the response of
3531 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003532
Jeff Johnson295189b2012-06-20 16:38:30 -07003533 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003534 callback
3535
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 @see WDI_AddBAReq
3537 @return Result of the function call
3538*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003539WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003540WDI_DelBAReq
3541(
3542 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3543 WDI_DelBARspCb wdiDelBARspCb,
3544 void* pUserData
3545)
3546{
3547 WDI_EventInfoType wdiEventData;
3548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3549
3550 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003551 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 ------------------------------------------------------------------------*/
3553 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3554 {
3555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3556 "WDI API call before module is initialized - Fail request");
3557
Jeff Johnsone7245742012-09-05 17:12:55 -07003558 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003559 }
3560
3561 /*------------------------------------------------------------------------
3562 Fill in Event data and post to the Main FSM
3563 ------------------------------------------------------------------------*/
3564 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003565 wdiEventData.pEventData = pwdiDelBAReqParams;
3566 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3567 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003568 wdiEventData.pUserData = pUserData;
3569
3570 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3571
3572}/*WDI_DelBAReq*/
3573
Jeff Johnsone7245742012-09-05 17:12:55 -07003574/*========================================================================
3575
Jeff Johnson295189b2012-06-20 16:38:30 -07003576 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003577
Jeff Johnson295189b2012-06-20 16:38:30 -07003578==========================================================================*/
3579
3580/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003581 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003582 wants to set the power save related configurations of
3583 the WLAN Device. Upon the call of this API the WLAN DAL
3584 will pack and send a HAL Update CFG request message to
3585 the lower RIVA sub-system if DAL is in state STARTED.
3586
3587 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003588 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003589
3590 WDI_Start must have been called.
3591
Jeff Johnsone7245742012-09-05 17:12:55 -07003592 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003593 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003594
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 wdiSetPwrSaveCfgCb: callback for passing back the
3596 response of the set power save cfg operation received
3597 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003598
Jeff Johnson295189b2012-06-20 16:38:30 -07003599 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003600 callback
3601
Jeff Johnson295189b2012-06-20 16:38:30 -07003602 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003603 @return Result of the function call
3604*/
3605WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003606WDI_SetPwrSaveCfgReq
3607(
3608 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3609 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3610 void* pUserData
3611)
3612{
3613 WDI_EventInfoType wdiEventData;
3614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3615
3616 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003617 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003618 ------------------------------------------------------------------------*/
3619 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3620 {
3621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3622 "WDI API call before module is initialized - Fail request");
3623
Jeff Johnsone7245742012-09-05 17:12:55 -07003624 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003625 }
3626
3627 /*------------------------------------------------------------------------
3628 Fill in Event data and post to the Main FSM
3629 ------------------------------------------------------------------------*/
3630 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003631 wdiEventData.pEventData = pwdiPowerSaveCfg;
3632 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3633 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003634 wdiEventData.pUserData = pUserData;
3635
3636 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3637
3638}/*WDI_SetPwrSaveCfgReq*/
3639
3640/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003641 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003642 request the device to get into IMPS power state. Upon
3643 the call of this API the WLAN DAL will send a HAL Enter
3644 IMPS request message to the lower RIVA sub-system if DAL
3645 is in state STARTED.
3646
3647 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003648 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003649
Jeff Johnsone7245742012-09-05 17:12:55 -07003650
3651 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003652 response of the Enter IMPS operation received from the
3653 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003654
Jeff Johnson295189b2012-06-20 16:38:30 -07003655 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003656 callback
3657
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 @see WDI_Start
3659 @return Result of the function call
3660*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003661WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003662WDI_EnterImpsReq
3663(
Mihir Shetea4306052014-03-25 00:02:54 +05303664 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003665 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3666 void* pUserData
3667)
3668{
3669 WDI_EventInfoType wdiEventData;
3670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3671
3672 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003673 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003674 ------------------------------------------------------------------------*/
3675 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3676 {
3677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3678 "WDI API call before module is initialized - Fail request");
3679
Jeff Johnsone7245742012-09-05 17:12:55 -07003680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003681 }
3682
3683 /*------------------------------------------------------------------------
3684 Fill in Event data and post to the Main FSM
3685 ------------------------------------------------------------------------*/
3686 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303687 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3688 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003689 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003690 wdiEventData.pUserData = pUserData;
3691
3692 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3693
3694}/*WDI_EnterImpsReq*/
3695
3696/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003697 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003698 request the device to get out of IMPS power state. Upon
3699 the call of this API the WLAN DAL will send a HAL Exit
3700 IMPS request message to the lower RIVA sub-system if DAL
3701 is in state STARTED.
3702
3703 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003704 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003705
Jeff Johnson295189b2012-06-20 16:38:30 -07003706
Jeff Johnsone7245742012-09-05 17:12:55 -07003707
3708 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003709 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003710
Jeff Johnson295189b2012-06-20 16:38:30 -07003711 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003712 callback
3713
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 @see WDI_Start
3715 @return Result of the function call
3716*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003717WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003718WDI_ExitImpsReq
3719(
3720 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3721 void* pUserData
3722)
3723{
3724 WDI_EventInfoType wdiEventData;
3725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3726
3727 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003728 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003729 ------------------------------------------------------------------------*/
3730 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3731 {
3732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3733 "WDI API call before module is initialized - Fail request");
3734
Jeff Johnsone7245742012-09-05 17:12:55 -07003735 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003736 }
3737
3738 /*------------------------------------------------------------------------
3739 Fill in Event data and post to the Main FSM
3740 ------------------------------------------------------------------------*/
3741 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003742 wdiEventData.pEventData = NULL;
3743 wdiEventData.uEventDataSize = 0;
3744 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003745 wdiEventData.pUserData = pUserData;
3746
3747 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3748
3749}/*WDI_ExitImpsReq*/
3750
3751/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003752 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003753 request the device to get into BMPS power state. Upon
3754 the call of this API the WLAN DAL will pack and send a
3755 HAL Enter BMPS request message to the lower RIVA
3756 sub-system if DAL is in state STARTED.
3757
3758 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003759 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003760
3761 WDI_PostAssocReq must have been called.
3762
Jeff Johnsone7245742012-09-05 17:12:55 -07003763 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003764 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003765
Jeff Johnson295189b2012-06-20 16:38:30 -07003766 wdiEnterBmpsRspCb: callback for passing back the
3767 response of the Enter BMPS operation received from the
3768 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003769
Jeff Johnson295189b2012-06-20 16:38:30 -07003770 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003771 callback
3772
Jeff Johnson295189b2012-06-20 16:38:30 -07003773 @see WDI_PostAssocReq
3774 @return Result of the function call
3775*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003777WDI_EnterBmpsReq
3778(
3779 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3780 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3781 void* pUserData
3782)
3783{
3784 WDI_EventInfoType wdiEventData;
3785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3786
3787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003789 ------------------------------------------------------------------------*/
3790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3791 {
3792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3793 "WDI API call before module is initialized - Fail request");
3794
Jeff Johnsone7245742012-09-05 17:12:55 -07003795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003796 }
3797
3798 /*------------------------------------------------------------------------
3799 Fill in Event data and post to the Main FSM
3800 ------------------------------------------------------------------------*/
3801 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003802 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3803 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3804 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003805 wdiEventData.pUserData = pUserData;
3806
3807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3808
3809}/*WDI_EnterBmpsReq*/
3810
3811/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003812 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003813 request the device to get out of BMPS power state. Upon
3814 the call of this API the WLAN DAL will pack and send a
3815 HAL Exit BMPS request message to the lower RIVA
3816 sub-system if DAL is in state STARTED.
3817
3818 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003820
3821 WDI_PostAssocReq must have been called.
3822
Jeff Johnsone7245742012-09-05 17:12:55 -07003823 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003825
Jeff Johnson295189b2012-06-20 16:38:30 -07003826 wdiExitBmpsRspCb: callback for passing back the response
3827 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003828
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003830 callback
3831
Jeff Johnson295189b2012-06-20 16:38:30 -07003832 @see WDI_PostAssocReq
3833 @return Result of the function call
3834*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003835WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003836WDI_ExitBmpsReq
3837(
3838 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3839 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3840 void* pUserData
3841)
3842{
3843 WDI_EventInfoType wdiEventData;
3844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3845
3846 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003847 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003848 ------------------------------------------------------------------------*/
3849 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3850 {
3851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3852 "WDI API call before module is initialized - Fail request");
3853
Jeff Johnsone7245742012-09-05 17:12:55 -07003854 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003855 }
3856
3857 /*------------------------------------------------------------------------
3858 Fill in Event data and post to the Main FSM
3859 ------------------------------------------------------------------------*/
3860 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003861 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3862 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3863 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003864 wdiEventData.pUserData = pUserData;
3865
3866 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3867
3868}/*WDI_ExitBmpsReq*/
3869
3870/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003871 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003872 request the device to get into UAPSD power state. Upon
3873 the call of this API the WLAN DAL will pack and send a
3874 HAL Enter UAPSD request message to the lower RIVA
3875 sub-system if DAL is in state STARTED.
3876
3877 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003878 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003879
3880 WDI_PostAssocReq must have been called.
3881 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003882
3883 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003884 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 wdiEnterUapsdRspCb: callback for passing back the
3887 response of the Enter UAPSD operation received from the
3888 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003889
Jeff Johnson295189b2012-06-20 16:38:30 -07003890 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 callback
3892
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3894 @return Result of the function call
3895*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003896WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003897WDI_EnterUapsdReq
3898(
3899 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3900 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3901 void* pUserData
3902)
3903{
3904 WDI_EventInfoType wdiEventData;
3905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3906
3907 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003908 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003909 ------------------------------------------------------------------------*/
3910 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3911 {
3912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3913 "WDI API call before module is initialized - Fail request");
3914
Jeff Johnsone7245742012-09-05 17:12:55 -07003915 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003916 }
3917
3918 /*------------------------------------------------------------------------
3919 Fill in Event data and post to the Main FSM
3920 ------------------------------------------------------------------------*/
3921 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003922 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3923 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3924 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 wdiEventData.pUserData = pUserData;
3926
3927 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3928
3929}/*WDI_EnterUapsdReq*/
3930
3931/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003932 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003933 request the device to get out of UAPSD power state. Upon
3934 the call of this API the WLAN DAL will send a HAL Exit
3935 UAPSD request message to the lower RIVA sub-system if
3936 DAL is in state STARTED.
3937
3938 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003940
3941 WDI_PostAssocReq must have been called.
3942
Jeff Johnsone7245742012-09-05 17:12:55 -07003943 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 response of the Exit UAPSD operation received from the
3945 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003946
Jeff Johnson295189b2012-06-20 16:38:30 -07003947 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003948 callback
3949
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 @see WDI_PostAssocReq
3951 @return Result of the function call
3952*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003953WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003954WDI_ExitUapsdReq
3955(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003956 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003957 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3958 void* pUserData
3959)
3960{
3961 WDI_EventInfoType wdiEventData;
3962 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3963
3964 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003965 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003966 ------------------------------------------------------------------------*/
3967 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3968 {
3969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3970 "WDI API call before module is initialized - Fail request");
3971
Jeff Johnsone7245742012-09-05 17:12:55 -07003972 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003973 }
3974
3975 /*------------------------------------------------------------------------
3976 Fill in Event data and post to the Main FSM
3977 ------------------------------------------------------------------------*/
3978 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003979 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3980 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003981 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003982 wdiEventData.pUserData = pUserData;
3983
3984 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3985
3986}/*WDI_ExitUapsdReq*/
3987
3988/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003989 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003990 MAC wants to set the UAPSD related configurations
3991 of an associated STA (while acting as an AP) to the WLAN
3992 Device. Upon the call of this API the WLAN DAL will pack
3993 and send a HAL Update UAPSD params request message to
3994 the lower RIVA sub-system if DAL is in state STARTED.
3995
3996 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003997 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003998
3999 WDI_ConfigBSSReq must have been called.
4000
Jeff Johnsone7245742012-09-05 17:12:55 -07004001 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004002 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004003
Jeff Johnson295189b2012-06-20 16:38:30 -07004004 wdiUpdateUapsdParamsCb: callback for passing back the
4005 response of the update UAPSD params operation received
4006 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004007
Jeff Johnson295189b2012-06-20 16:38:30 -07004008 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004009 callback
4010
Jeff Johnson295189b2012-06-20 16:38:30 -07004011 @see WDI_ConfigBSSReq
4012 @return Result of the function call
4013*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004014WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004015WDI_UpdateUapsdParamsReq
4016(
4017 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4018 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4019 void* pUserData
4020)
4021{
4022 WDI_EventInfoType wdiEventData;
4023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4024
4025 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004026 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004027 ------------------------------------------------------------------------*/
4028 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4029 {
4030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4031 "WDI API call before module is initialized - Fail request");
4032
Jeff Johnsone7245742012-09-05 17:12:55 -07004033 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004034 }
4035
4036 /*------------------------------------------------------------------------
4037 Fill in Event data and post to the Main FSM
4038 ------------------------------------------------------------------------*/
4039 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004040 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004041 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 wdiEventData.pUserData = pUserData;
4044
4045 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4046
4047}/*WDI_UpdateUapsdParamsReq*/
4048
4049/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004050 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004051 MAC wants to set the UAPSD related configurations before
4052 requesting for enter UAPSD power state to the WLAN
4053 Device. Upon the call of this API the WLAN DAL will pack
4054 and send a HAL Set UAPSD params request message to
4055 the lower RIVA sub-system if DAL is in state STARTED.
4056
4057 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004058 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004059
4060 WDI_PostAssocReq must have been called.
4061
4062 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4063 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004064
Jeff Johnson295189b2012-06-20 16:38:30 -07004065 wdiSetUapsdAcParamsCb: callback for passing back the
4066 response of the set UAPSD params operation received from
4067 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004068
Jeff Johnson295189b2012-06-20 16:38:30 -07004069 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004070 callback
4071
Jeff Johnson295189b2012-06-20 16:38:30 -07004072 @see WDI_PostAssocReq
4073 @return Result of the function call
4074*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004075WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004076WDI_SetUapsdAcParamsReq
4077(
4078 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4079 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4080 void* pUserData
4081)
4082{
4083 WDI_EventInfoType wdiEventData;
4084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4085
4086 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004087 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004088 ------------------------------------------------------------------------*/
4089 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4090 {
4091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4092 "WDI API call before module is initialized - Fail request");
4093
Jeff Johnsone7245742012-09-05 17:12:55 -07004094 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004095 }
4096
4097 /*------------------------------------------------------------------------
4098 Fill in Event data and post to the Main FSM
4099 ------------------------------------------------------------------------*/
4100 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004101 wdiEventData.pEventData = pwdiUapsdInfo;
4102 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4103 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004104 wdiEventData.pUserData = pUserData;
4105
4106 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4107
4108}/*WDI_SetUapsdAcParamsReq*/
4109
4110/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004111 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004112 MAC wants to set/reset the RXP filters for received pkts
4113 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4114 and send a HAL configure RXP filter request message to
4115 the lower RIVA sub-system.
4116
4117 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004118 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004119
Jeff Johnsone7245742012-09-05 17:12:55 -07004120
4121 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004122 filter as specified by the Device
4123 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004124
Jeff Johnson295189b2012-06-20 16:38:30 -07004125 wdiConfigureRxpFilterCb: callback for passing back the
4126 response of the configure RXP filter operation received
4127 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004128
Jeff Johnson295189b2012-06-20 16:38:30 -07004129 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004130 callback
4131
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 @return Result of the function call
4133*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004134WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004135WDI_ConfigureRxpFilterReq
4136(
4137 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4138 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4139 void* pUserData
4140)
4141{
4142 WDI_EventInfoType wdiEventData;
4143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4144
4145 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004146 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004147 ------------------------------------------------------------------------*/
4148 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4149 {
4150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4151 "WDI API call before module is initialized - Fail request");
4152
Jeff Johnsone7245742012-09-05 17:12:55 -07004153 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004154 }
4155
4156 /*------------------------------------------------------------------------
4157 Fill in Event data and post to the Main FSM
4158 ------------------------------------------------------------------------*/
4159 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004160 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4161 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4162 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 wdiEventData.pUserData = pUserData;
4164
4165 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4166}/*WDI_ConfigureRxpFilterReq*/
4167
4168/**
4169 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4170 wants to set the beacon filters while in power save.
4171 Upon the call of this API the WLAN DAL will pack and
4172 send a Beacon filter request message to the
4173 lower RIVA sub-system.
4174
4175 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004176 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004177
Jeff Johnsone7245742012-09-05 17:12:55 -07004178
4179 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 filter as specified by the Device
4181 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004182
Jeff Johnson295189b2012-06-20 16:38:30 -07004183 wdiBeaconFilterCb: callback for passing back the
4184 response of the set beacon filter operation received
4185 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004186
Jeff Johnson295189b2012-06-20 16:38:30 -07004187 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004188 callback
4189
Jeff Johnson295189b2012-06-20 16:38:30 -07004190 @return Result of the function call
4191*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004192WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004193WDI_SetBeaconFilterReq
4194(
4195 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4196 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4197 void* pUserData
4198)
4199{
4200 WDI_EventInfoType wdiEventData;
4201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4202
4203 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004204 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004205 ------------------------------------------------------------------------*/
4206 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4207 {
4208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4209 "WDI API call before module is initialized - Fail request");
4210
Jeff Johnsone7245742012-09-05 17:12:55 -07004211 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004212 }
4213
4214 /*------------------------------------------------------------------------
4215 Fill in Event data and post to the Main FSM
4216 ------------------------------------------------------------------------*/
4217 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004218 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004219 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004220 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004221 wdiEventData.pUserData = pUserData;
4222
4223 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4224}/*WDI_SetBeaconFilterReq*/
4225
4226/**
4227 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4228 wants to remove the beacon filter for particular IE
4229 while in power save. Upon the call of this API the WLAN
4230 DAL will pack and send a remove Beacon filter request
4231 message to the lower RIVA sub-system.
4232
4233 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004234 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004235
Jeff Johnsone7245742012-09-05 17:12:55 -07004236
4237 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004238 filter as specified by the Device
4239 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004240
Jeff Johnson295189b2012-06-20 16:38:30 -07004241 wdiBeaconFilterCb: callback for passing back the
4242 response of the remove beacon filter operation received
4243 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004244
Jeff Johnson295189b2012-06-20 16:38:30 -07004245 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004246 callback
4247
Jeff Johnson295189b2012-06-20 16:38:30 -07004248 @return Result of the function call
4249*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004250WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004251WDI_RemBeaconFilterReq
4252(
4253 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4254 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4255 void* pUserData
4256)
4257{
4258 WDI_EventInfoType wdiEventData;
4259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4260
4261 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004262 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004263 ------------------------------------------------------------------------*/
4264 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4265 {
4266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4267 "WDI API call before module is initialized - Fail request");
4268
Jeff Johnsone7245742012-09-05 17:12:55 -07004269 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004270 }
4271
4272 /*------------------------------------------------------------------------
4273 Fill in Event data and post to the Main FSM
4274 ------------------------------------------------------------------------*/
4275 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004276 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004277 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004278 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004279 wdiEventData.pUserData = pUserData;
4280
4281 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4282}/*WDI_RemBeaconFilterReq*/
4283
4284/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004285 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004286 MAC wants to set the RSSI thresholds related
4287 configurations while in power save. Upon the call of
4288 this API the WLAN DAL will pack and send a HAL Set RSSI
4289 thresholds request message to the lower RIVA
4290 sub-system if DAL is in state STARTED.
4291
4292 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004293 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004294
4295 WDI_PostAssocReq must have been called.
4296
4297 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4298 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004299
Jeff Johnson295189b2012-06-20 16:38:30 -07004300 wdiSetUapsdAcParamsCb: callback for passing back the
4301 response of the set UAPSD params operation received from
4302 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004303
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004305 callback
4306
Jeff Johnson295189b2012-06-20 16:38:30 -07004307 @see WDI_PostAssocReq
4308 @return Result of the function call
4309*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004311WDI_SetRSSIThresholdsReq
4312(
4313 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4314 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4315 void* pUserData
4316)
4317{
4318 WDI_EventInfoType wdiEventData;
4319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4320
4321 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004322 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004323 ------------------------------------------------------------------------*/
4324 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4325 {
4326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4327 "WDI API call before module is initialized - Fail request");
4328
Jeff Johnsone7245742012-09-05 17:12:55 -07004329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004330 }
4331
4332 /*------------------------------------------------------------------------
4333 Fill in Event data and post to the Main FSM
4334 ------------------------------------------------------------------------*/
4335 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004336 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004337 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004338 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004339 wdiEventData.pUserData = pUserData;
4340
4341 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4342}/* WDI_SetRSSIThresholdsReq*/
4343
4344/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004345 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004346 wants to set the filter to minimize unnecessary host
4347 wakeup due to broadcast traffic while in power save.
4348 Upon the call of this API the WLAN DAL will pack and
4349 send a HAL host offload request message to the
4350 lower RIVA sub-system if DAL is in state STARTED.
4351
4352 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004353 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004354
4355 WDI_PostAssocReq must have been called.
4356
Jeff Johnsone7245742012-09-05 17:12:55 -07004357 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004358 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004359
Jeff Johnson295189b2012-06-20 16:38:30 -07004360 wdiHostOffloadCb: callback for passing back the response
4361 of the host offload operation received from the
4362 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004363
Jeff Johnson295189b2012-06-20 16:38:30 -07004364 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004365 callback
4366
Jeff Johnson295189b2012-06-20 16:38:30 -07004367 @see WDI_PostAssocReq
4368 @return Result of the function call
4369*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004370WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004371WDI_HostOffloadReq
4372(
4373 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4374 WDI_HostOffloadCb wdiHostOffloadCb,
4375 void* pUserData
4376)
4377{
4378 WDI_EventInfoType wdiEventData;
4379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4380
4381 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004382 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004383 ------------------------------------------------------------------------*/
4384 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4385 {
4386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4387 "WDI API call before module is initialized - Fail request");
4388
Jeff Johnsone7245742012-09-05 17:12:55 -07004389 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004390 }
4391
4392 /*------------------------------------------------------------------------
4393 Fill in Event data and post to the Main FSM
4394 ------------------------------------------------------------------------*/
4395 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004396 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004397 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004398 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004399 wdiEventData.pUserData = pUserData;
4400
4401 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4402}/*WDI_HostOffloadReq*/
4403
4404/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004405 @brief WDI_KeepAliveReq will be called when the upper MAC
4406 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004407 and minimize unnecessary host wakeups due to while in power save.
4408 Upon the call of this API the WLAN DAL will pack and
4409 send a HAL Keep Alive request message to the
4410 lower RIVA sub-system if DAL is in state STARTED.
4411
4412 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004413 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004414
4415 WDI_PostAssocReq must have been called.
4416
Jeff Johnsone7245742012-09-05 17:12:55 -07004417 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004418 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004419
Jeff Johnson295189b2012-06-20 16:38:30 -07004420 wdiKeepAliveCb: callback for passing back the response
4421 of the Keep Alive operation received from the
4422 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004423
Jeff Johnson295189b2012-06-20 16:38:30 -07004424 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004425 callback
4426
Jeff Johnson295189b2012-06-20 16:38:30 -07004427 @see WDI_PostAssocReq
4428 @return Result of the function call
4429*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004430WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004431WDI_KeepAliveReq
4432(
4433 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4434 WDI_KeepAliveCb wdiKeepAliveCb,
4435 void* pUserData
4436)
4437{
4438 WDI_EventInfoType wdiEventData;
4439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4440
4441 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004442 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004443 ------------------------------------------------------------------------*/
4444 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4445 {
4446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4447 "WDI_KeepAliveReq: WDI API call before module "
4448 "is initialized - Fail request");
4449
Jeff Johnsone7245742012-09-05 17:12:55 -07004450 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004451 }
4452
4453 /*------------------------------------------------------------------------
4454 Fill in Event data and post to the Main FSM
4455 ------------------------------------------------------------------------*/
4456 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004457 wdiEventData.pEventData = pwdiKeepAliveParams;
4458 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4459 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004460 wdiEventData.pUserData = pUserData;
4461
4462 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4463}/*WDI_KeepAliveReq*/
4464
4465/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004466 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004467 wants to set the Wowl Bcast ptrn to minimize unnecessary
4468 host wakeup due to broadcast traffic while in power
4469 save. Upon the call of this API the WLAN DAL will pack
4470 and send a HAL Wowl Bcast ptrn request message to the
4471 lower RIVA sub-system if DAL is in state STARTED.
4472
4473 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004474 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004475
4476 WDI_PostAssocReq must have been called.
4477
Jeff Johnsone7245742012-09-05 17:12:55 -07004478 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004479 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004480
Jeff Johnson295189b2012-06-20 16:38:30 -07004481 wdiWowlAddBcPtrnCb: callback for passing back the
4482 response of the add Wowl bcast ptrn operation received
4483 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004484
Jeff Johnson295189b2012-06-20 16:38:30 -07004485 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004486 callback
4487
Jeff Johnson295189b2012-06-20 16:38:30 -07004488 @see WDI_PostAssocReq
4489 @return Result of the function call
4490*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004491WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004492WDI_WowlAddBcPtrnReq
4493(
4494 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4495 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4496 void* pUserData
4497)
4498{
4499 WDI_EventInfoType wdiEventData;
4500 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4501
4502 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004503 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004504 ------------------------------------------------------------------------*/
4505 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4506 {
4507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4508 "WDI API call before module is initialized - Fail request");
4509
Jeff Johnsone7245742012-09-05 17:12:55 -07004510 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004511 }
4512
4513 /*------------------------------------------------------------------------
4514 Fill in Event data and post to the Main FSM
4515 ------------------------------------------------------------------------*/
4516 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004517 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004518 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004519 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004520 wdiEventData.pUserData = pUserData;
4521
4522 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4523}/*WDI_WowlAddBcPtrnReq*/
4524
4525/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004526 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004527 wants to clear the Wowl Bcast ptrn. Upon the call of
4528 this API the WLAN DAL will pack and send a HAL delete
4529 Wowl Bcast ptrn request message to the lower RIVA
4530 sub-system if DAL is in state STARTED.
4531
4532 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004533 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004534
4535 WDI_WowlAddBcPtrnReq must have been called.
4536
Jeff Johnsone7245742012-09-05 17:12:55 -07004537 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004539
Jeff Johnson295189b2012-06-20 16:38:30 -07004540 wdiWowlDelBcPtrnCb: callback for passing back the
4541 response of the del Wowl bcast ptrn operation received
4542 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004543
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004545 callback
4546
Jeff Johnson295189b2012-06-20 16:38:30 -07004547 @see WDI_WowlAddBcPtrnReq
4548 @return Result of the function call
4549*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004550WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004551WDI_WowlDelBcPtrnReq
4552(
4553 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4554 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4555 void* pUserData
4556)
4557{
4558 WDI_EventInfoType wdiEventData;
4559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4560
4561 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004562 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004563 ------------------------------------------------------------------------*/
4564 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4565 {
4566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4567 "WDI API call before module is initialized - Fail request");
4568
Jeff Johnsone7245742012-09-05 17:12:55 -07004569 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004570 }
4571
4572 /*------------------------------------------------------------------------
4573 Fill in Event data and post to the Main FSM
4574 ------------------------------------------------------------------------*/
4575 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004576 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004577 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004578 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004579 wdiEventData.pUserData = pUserData;
4580
4581 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4582}/*WDI_WowlDelBcPtrnReq*/
4583
4584/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004585 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004586 wants to enter the Wowl state to minimize unnecessary
4587 host wakeup while in power save. Upon the call of this
4588 API the WLAN DAL will pack and send a HAL Wowl enter
4589 request message to the lower RIVA sub-system if DAL is
4590 in state STARTED.
4591
4592 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004593 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004594
4595 WDI_PostAssocReq must have been called.
4596
Jeff Johnsone7245742012-09-05 17:12:55 -07004597 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004598 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004599
Jeff Johnson295189b2012-06-20 16:38:30 -07004600 wdiWowlEnterReqCb: callback for passing back the
4601 response of the enter Wowl operation received from the
4602 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004603
Jeff Johnson295189b2012-06-20 16:38:30 -07004604 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004605 callback
4606
Jeff Johnson295189b2012-06-20 16:38:30 -07004607 @see WDI_PostAssocReq
4608 @return Result of the function call
4609*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004610WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004611WDI_WowlEnterReq
4612(
4613 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4614 WDI_WowlEnterReqCb wdiWowlEnterCb,
4615 void* pUserData
4616)
4617{
4618 WDI_EventInfoType wdiEventData;
4619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4620
4621 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004622 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004623 ------------------------------------------------------------------------*/
4624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4625 {
4626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4627 "WDI API call before module is initialized - Fail request");
4628
Jeff Johnsone7245742012-09-05 17:12:55 -07004629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004630 }
4631
4632 /*------------------------------------------------------------------------
4633 Fill in Event data and post to the Main FSM
4634 ------------------------------------------------------------------------*/
4635 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004636 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004637 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004638 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004639 wdiEventData.pUserData = pUserData;
4640
4641 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4642}/*WDI_WowlEnterReq*/
4643
4644/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004645 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004646 wants to exit the Wowl state. Upon the call of this API
4647 the WLAN DAL will pack and send a HAL Wowl exit request
4648 message to the lower RIVA sub-system if DAL is in state
4649 STARTED.
4650
4651 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004652 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004653
4654 WDI_WowlEnterReq must have been called.
4655
Jeff Johnsone7245742012-09-05 17:12:55 -07004656 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004657 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004658
Jeff Johnson295189b2012-06-20 16:38:30 -07004659 wdiWowlExitReqCb: callback for passing back the response
4660 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004661
Jeff Johnson295189b2012-06-20 16:38:30 -07004662 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 callback
4664
Jeff Johnson295189b2012-06-20 16:38:30 -07004665 @see WDI_WowlEnterReq
4666 @return Result of the function call
4667*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004668WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004669WDI_WowlExitReq
4670(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004671 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004672 WDI_WowlExitReqCb wdiWowlExitCb,
4673 void* pUserData
4674)
4675{
4676 WDI_EventInfoType wdiEventData;
4677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4678
4679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004680 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004681 ------------------------------------------------------------------------*/
4682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4683 {
4684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4685 "WDI API call before module is initialized - Fail request");
4686
Jeff Johnsone7245742012-09-05 17:12:55 -07004687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004688 }
4689
4690 /*------------------------------------------------------------------------
4691 Fill in Event data and post to the Main FSM
4692 ------------------------------------------------------------------------*/
4693 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004694 wdiEventData.pEventData = pwdiWowlExitParams;
4695 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004696 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 wdiEventData.pUserData = pUserData;
4698
4699 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4700}/*WDI_WowlExitReq*/
4701
4702/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004703 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004704 the upper MAC wants to dynamically adjusts the listen
4705 interval based on the WLAN/MSM activity. Upon the call
4706 of this API the WLAN DAL will pack and send a HAL
4707 configure Apps Cpu Wakeup State request message to the
4708 lower RIVA sub-system.
4709
4710 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004711 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004712
Jeff Johnsone7245742012-09-05 17:12:55 -07004713
4714 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004715 Apps Cpu Wakeup State as specified by the
4716 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004717
Jeff Johnson295189b2012-06-20 16:38:30 -07004718 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4719 back the response of the configure Apps Cpu Wakeup State
4720 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004721
Jeff Johnson295189b2012-06-20 16:38:30 -07004722 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004723 callback
4724
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 @return Result of the function call
4726*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004728WDI_ConfigureAppsCpuWakeupStateReq
4729(
4730 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4731 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4732 void* pUserData
4733)
4734{
4735 WDI_EventInfoType wdiEventData;
4736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4737
4738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004740 ------------------------------------------------------------------------*/
4741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4742 {
4743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4744 "WDI API call before module is initialized - Fail request");
4745
Jeff Johnsone7245742012-09-05 17:12:55 -07004746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004747 }
4748
4749 /*------------------------------------------------------------------------
4750 Fill in Event data and post to the Main FSM
4751 ------------------------------------------------------------------------*/
4752 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004753 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4754 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4755 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004756 wdiEventData.pUserData = pUserData;
4757
4758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4759}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4760/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004761 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004762 to to perform a flush operation on a given AC. Upon the
4763 call of this API the WLAN DAL will pack and send a HAL
4764 Flush AC request message to the lower RIVA sub-system if
4765 DAL is in state STARTED.
4766
4767 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004768 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004769
4770 WDI_AddBAReq must have been called.
4771
Jeff Johnsone7245742012-09-05 17:12:55 -07004772 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004773 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004774
Jeff Johnson295189b2012-06-20 16:38:30 -07004775 wdiFlushAcRspCb: callback for passing back the response
4776 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004777
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004779 callback
4780
Jeff Johnson295189b2012-06-20 16:38:30 -07004781 @see WDI_AddBAReq
4782 @return Result of the function call
4783*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004784WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004785WDI_FlushAcReq
4786(
4787 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4788 WDI_FlushAcRspCb wdiFlushAcRspCb,
4789 void* pUserData
4790)
4791{
4792 WDI_EventInfoType wdiEventData;
4793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4794
4795 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004796 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004797 ------------------------------------------------------------------------*/
4798 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4799 {
4800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4801 "WDI API call before module is initialized - Fail request");
4802
Jeff Johnsone7245742012-09-05 17:12:55 -07004803 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004804 }
4805
4806 /*------------------------------------------------------------------------
4807 Fill in Event data and post to the Main FSM
4808 ------------------------------------------------------------------------*/
4809 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004810 wdiEventData.pEventData = pwdiFlushAcReqParams;
4811 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4812 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004813 wdiEventData.pUserData = pUserData;
4814
4815 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4816
4817}/*WDI_FlushAcReq*/
4818
4819/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004820 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004821 wants to notify the lower mac on a BT AMP event. This is
4822 to inform BTC-SLM that some BT AMP event occurred. Upon
4823 the call of this API the WLAN DAL will pack and send a
4824 HAL BT AMP event request message to the lower RIVA
4825 sub-system if DAL is in state STARTED.
4826
4827 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004828 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004829
Jeff Johnsone7245742012-09-05 17:12:55 -07004830
4831 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004832 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004833
Jeff Johnson295189b2012-06-20 16:38:30 -07004834 wdiBtAmpEventRspCb: callback for passing back the
4835 response of the BT AMP event operation received from the
4836 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004837
Jeff Johnson295189b2012-06-20 16:38:30 -07004838 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004839 callback
4840
Jeff Johnson295189b2012-06-20 16:38:30 -07004841 @return Result of the function call
4842*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004843WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004844WDI_BtAmpEventReq
4845(
4846 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4847 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4848 void* pUserData
4849)
4850{
4851 WDI_EventInfoType wdiEventData;
4852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4853
4854 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004855 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 ------------------------------------------------------------------------*/
4857 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4858 {
4859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4860 "WDI API call before module is initialized - Fail request");
4861
Jeff Johnsone7245742012-09-05 17:12:55 -07004862 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004863 }
4864
4865 /*------------------------------------------------------------------------
4866 Fill in Event data and post to the Main FSM
4867 ------------------------------------------------------------------------*/
4868 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004869 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4870 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4871 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004872 wdiEventData.pUserData = pUserData;
4873
4874 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4875
4876}/*WDI_BtAmpEventReq*/
4877
Jeff Johnsone7245742012-09-05 17:12:55 -07004878#ifdef FEATURE_OEM_DATA_SUPPORT
4879/**
4880 @brief WDI_Start Oem Data Req will be called when the upper MAC
4881 wants to notify the lower mac on a oem data Req event.Upon
4882 the call of this API the WLAN DAL will pack and send a
4883 HAL OEM Data Req event request message to the lower RIVA
4884 sub-system if DAL is in state STARTED.
4885
4886 In state BUSY this request will be queued. Request won't
4887 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004888
4889
Jeff Johnsone7245742012-09-05 17:12:55 -07004890
4891 @param pwdiOemDataReqParams: the Oem Data Req as
4892 specified by the Device Interface
4893
4894 wdiStartOemDataRspCb: callback for passing back the
4895 response of the Oem Data Req received from the
4896 device
4897
4898 pUserData: user data will be passed back with the
4899 callback
4900
4901 @return Result of the function call
4902*/
4903WDI_Status
4904WDI_StartOemDataReq
4905(
4906 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4907 WDI_oemDataRspCb wdiOemDataRspCb,
4908 void* pUserData
4909)
4910{
4911 WDI_EventInfoType wdiEventData;
4912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4913
4914 /*------------------------------------------------------------------------
4915 Sanity Check
4916 ------------------------------------------------------------------------*/
4917 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4918 {
4919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4920 "WDI API call before module is initialized - Fail request");
4921
4922 return WDI_STATUS_E_NOT_ALLOWED;
4923 }
4924
4925 /*------------------------------------------------------------------------
4926 Fill in Event data and post to the Main FSM
4927 ------------------------------------------------------------------------*/
4928 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4929 wdiEventData.pEventData = pwdiOemDataReqParams;
4930 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4931 wdiEventData.pCBfnc = wdiOemDataRspCb;
4932 wdiEventData.pUserData = pUserData;
4933
4934 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4935
4936
4937}
4938
4939#endif
4940
4941
4942/*========================================================================
4943
Jeff Johnson295189b2012-06-20 16:38:30 -07004944 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004945
Jeff Johnson295189b2012-06-20 16:38:30 -07004946==========================================================================*/
4947/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004948 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004949 the WLAN HW to change the current channel of operation.
4950 Upon the call of this API the WLAN DAL will pack and
4951 send a HAL Start request message to the lower RIVA
4952 sub-system if DAL is in state STARTED.
4953
4954 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004955 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004956
4957 WDI_Start must have been called.
4958
Jeff Johnsone7245742012-09-05 17:12:55 -07004959 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004960 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004961
Jeff Johnson295189b2012-06-20 16:38:30 -07004962 wdiSwitchChRspCb: callback for passing back the response
4963 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004964
Jeff Johnson295189b2012-06-20 16:38:30 -07004965 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004966 callback
4967
Jeff Johnson295189b2012-06-20 16:38:30 -07004968 @see WDI_Start
4969 @return Result of the function call
4970*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004971WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004972WDI_SwitchChReq
4973(
4974 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4975 WDI_SwitchChRspCb wdiSwitchChRspCb,
4976 void* pUserData
4977)
4978{
4979 WDI_EventInfoType wdiEventData;
4980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4981
4982 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004983 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004984 ------------------------------------------------------------------------*/
4985 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4986 {
4987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4988 "WDI API call before module is initialized - Fail request");
4989
Jeff Johnsone7245742012-09-05 17:12:55 -07004990 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004991 }
4992
4993 /*------------------------------------------------------------------------
4994 Fill in Event data and post to the Main FSM
4995 ------------------------------------------------------------------------*/
4996 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 wdiEventData.pEventData = pwdiSwitchChReqParams;
4998 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4999 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005000 wdiEventData.pUserData = pUserData;
5001
5002 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5003
5004}/*WDI_SwitchChReq*/
5005
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005006/**
5007 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5008 the WLAN HW to change the current channel of operation.
5009 Upon the call of this API the WLAN DAL will pack and
5010 send a HAL Start request message to the lower RIVA
5011 sub-system if DAL is in state STARTED.
5012 This request message also includes source of channel switch,
5013 like CSA,
5014
5015 In state BUSY this request will be queued. Request won't
5016 be allowed in any other state.
5017
5018 WDI_Start must have been called.
5019
5020 @param wdiSwitchChReqParams: the switch ch parameters as
5021 specified by the Device Interface
5022
5023 wdiSwitchChRspCb: callback for passing back the response
5024 of the switch ch operation received from the device
5025
5026 pUserData: user data will be passed back with the
5027 callback
5028
5029 @see WDI_Start
5030 @return Result of the function call
5031*/
5032WDI_Status
5033WDI_SwitchChReq_V1
5034(
5035 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5036 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5037 void* pUserData
5038)
5039{
5040 WDI_EventInfoType wdiEventData;
5041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5043 "WDI API call WDI_SwitchChReq_V1");
5044 /*------------------------------------------------------------------------
5045 Sanity Check
5046 ------------------------------------------------------------------------*/
5047 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5048 {
5049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5050 "WDI API call before module is initialized - Fail request");
5051
5052 return WDI_STATUS_E_NOT_ALLOWED;
5053 }
5054
5055 /*------------------------------------------------------------------------
5056 Fill in Event data and post to the Main FSM
5057 ------------------------------------------------------------------------*/
5058 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5059 wdiEventData.pEventData = pwdiSwitchChReqParams;
5060 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5061 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5062 wdiEventData.pUserData = pUserData;
5063
5064 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5065
5066}/*WDI_SwitchChReq_V1*/
5067
Jeff Johnson295189b2012-06-20 16:38:30 -07005068
5069/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005070 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005071 wishes to add or update a STA in HW. Upon the call of
5072 this API the WLAN DAL will pack and send a HAL Start
5073 message request message to the lower RIVA sub-system if
5074 DAL is in state STARTED.
5075
5076 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005077 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005078
5079 WDI_Start must have been called.
5080
Jeff Johnsone7245742012-09-05 17:12:55 -07005081 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005082 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005083
Jeff Johnson295189b2012-06-20 16:38:30 -07005084 wdiConfigSTARspCb: callback for passing back the
5085 response of the config STA operation received from the
5086 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005087
Jeff Johnson295189b2012-06-20 16:38:30 -07005088 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005089 callback
5090
Jeff Johnson295189b2012-06-20 16:38:30 -07005091 @see WDI_Start
5092 @return Result of the function call
5093*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005094WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005095WDI_ConfigSTAReq
5096(
5097 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5098 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5099 void* pUserData
5100)
5101{
5102 WDI_EventInfoType wdiEventData;
5103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5104
5105 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005106 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005107 ------------------------------------------------------------------------*/
5108 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5109 {
5110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5111 "WDI API call before module is initialized - Fail request");
5112
Jeff Johnsone7245742012-09-05 17:12:55 -07005113 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005114 }
5115
5116 /*------------------------------------------------------------------------
5117 Fill in Event data and post to the Main FSM
5118 ------------------------------------------------------------------------*/
5119 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005120 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5121 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5122 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005123 wdiEventData.pUserData = pUserData;
5124
5125 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5126
5127}/*WDI_ConfigSTAReq*/
5128
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005129 /**
5130 @brief WDI_UpdateChannelReq will be called when the upper MAC
5131 wants to update the channel list on change in country code.
5132
5133 In state BUSY this request will be queued. Request won't
5134 be allowed in any other state.
5135
5136 WDI_UpdateChannelReq must have been called.
5137
5138 @param wdiUpdateChannelReqParams: the updated channel parameters
5139 as specified by the Device Interface
5140
5141 wdiUpdateChannelRspCb: callback for passing back the
5142 response of the update channel operation received from
5143 the device
5144
5145 pUserData: user data will be passed back with the
5146 callback
5147
5148 @return Result of the function call
5149*/
5150WDI_Status
5151WDI_UpdateChannelReq
5152(
5153 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5154 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5155 void* pUserData
5156)
5157{
5158 WDI_EventInfoType wdiEventData = {{0}};
5159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5160
5161 /*------------------------------------------------------------------------
5162 Sanity Check
5163 ------------------------------------------------------------------------*/
5164 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5165 {
5166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5167 "WDI API call before module is initialized - Fail request");
5168
5169 return WDI_STATUS_E_NOT_ALLOWED;
5170 }
5171
5172 /*------------------------------------------------------------------------
5173 Fill in Event data and post to the Main FSM
5174 ------------------------------------------------------------------------*/
5175 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5176 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5177 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5178 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5179 wdiEventData.pUserData = pUserData;
5180
5181 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5182
5183}/*WDI_UpdateChannelReq*/
5184
Jeff Johnson295189b2012-06-20 16:38:30 -07005185/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005186 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005187 wants to change the state of an ongoing link. Upon the
5188 call of this API the WLAN DAL will pack and send a HAL
5189 Start message request message to the lower RIVA
5190 sub-system if DAL is in state STARTED.
5191
5192 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005193 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005194
5195 WDI_JoinStartReq must have been called.
5196
Jeff Johnsone7245742012-09-05 17:12:55 -07005197 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005198 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005199
Jeff Johnson295189b2012-06-20 16:38:30 -07005200 wdiSetLinkStateRspCb: callback for passing back the
5201 response of the set link state operation received from
5202 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005203
Jeff Johnson295189b2012-06-20 16:38:30 -07005204 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005205 callback
5206
Jeff Johnson295189b2012-06-20 16:38:30 -07005207 @see WDI_JoinStartReq
5208 @return Result of the function call
5209*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005210WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005211WDI_SetLinkStateReq
5212(
5213 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5214 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5215 void* pUserData
5216)
5217{
5218 WDI_EventInfoType wdiEventData;
5219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5220
5221 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005222 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005223 ------------------------------------------------------------------------*/
5224 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5225 {
5226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5227 "WDI API call before module is initialized - Fail request");
5228
Jeff Johnsone7245742012-09-05 17:12:55 -07005229 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005230 }
5231
5232 /*------------------------------------------------------------------------
5233 Fill in Event data and post to the Main FSM
5234 ------------------------------------------------------------------------*/
5235 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005236 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5237 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5238 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005239 wdiEventData.pUserData = pUserData;
5240
5241 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5242
5243}/*WDI_SetLinkStateReq*/
5244
5245
5246/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005247 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005248 to get statistics (MIB counters) from the device. Upon
5249 the call of this API the WLAN DAL will pack and send a
5250 HAL Start request message to the lower RIVA sub-system
5251 if DAL is in state STARTED.
5252
5253 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005254 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005255
5256 WDI_Start must have been called.
5257
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005259 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005260
Jeff Johnson295189b2012-06-20 16:38:30 -07005261 wdiGetStatsRspCb: callback for passing back the response
5262 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005263
Jeff Johnson295189b2012-06-20 16:38:30 -07005264 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005265 callback
5266
Jeff Johnson295189b2012-06-20 16:38:30 -07005267 @see WDI_Start
5268 @return Result of the function call
5269*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005270WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005271WDI_GetStatsReq
5272(
5273 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5274 WDI_GetStatsRspCb wdiGetStatsRspCb,
5275 void* pUserData
5276)
5277{
5278 WDI_EventInfoType wdiEventData;
5279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5280
5281 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005282 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 ------------------------------------------------------------------------*/
5284 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5285 {
5286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5287 "WDI API call before module is initialized - Fail request");
5288
Jeff Johnsone7245742012-09-05 17:12:55 -07005289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005290 }
5291
5292 /*------------------------------------------------------------------------
5293 Fill in Event data and post to the Main FSM
5294 ------------------------------------------------------------------------*/
5295 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005296 wdiEventData.pEventData = pwdiGetStatsReqParams;
5297 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5298 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005299 wdiEventData.pUserData = pUserData;
5300
5301 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5302
5303}/*WDI_GetStatsReq*/
5304
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005305#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005306/**
5307 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5308 to get roam rssi from the device. Upon
5309 the call of this API the WLAN DAL will pack and send a
5310 HAL Start request message to the lower RIVA sub-system
5311 if DAL is in state STARTED.
5312
5313 In state BUSY this request will be queued. Request won't
5314 be allowed in any other state.
5315
5316 WDI_Start must have been called.
5317
5318 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5319 specified by the Device Interface
5320
5321 wdiGetRoamRssiRspCb: callback for passing back the response
5322 of the get stats operation received from the device
5323
5324 pUserData: user data will be passed back with the
5325 callback
5326
5327 @see WDI_Start
5328 @return Result of the function call
5329*/
5330WDI_Status
5331WDI_GetRoamRssiReq
5332(
5333 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5334 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5335 void* pUserData
5336)
5337{
5338 WDI_EventInfoType wdiEventData;
5339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5340
5341 /*------------------------------------------------------------------------
5342 Sanity Check
5343 ------------------------------------------------------------------------*/
5344 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5345 {
5346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5347 "WDI API call before module is initialized - Fail request");
5348
5349 return WDI_STATUS_E_NOT_ALLOWED;
5350 }
5351 /*------------------------------------------------------------------------
5352 Fill in Event data and post to the Main FSM
5353 ------------------------------------------------------------------------*/
5354 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5355 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5356 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5357 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5358 wdiEventData.pUserData = pUserData;
5359
5360 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5361
5362}/*WDI_GetRoamRssiReq*/
5363#endif
5364
Jeff Johnson295189b2012-06-20 16:38:30 -07005365
5366/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005367 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005368 it wishes to change the configuration of the WLAN
5369 Device. Upon the call of this API the WLAN DAL will pack
5370 and send a HAL Update CFG request message to the lower
5371 RIVA sub-system if DAL is in state STARTED.
5372
5373 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005374 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005375
5376 WDI_Start must have been called.
5377
Jeff Johnsone7245742012-09-05 17:12:55 -07005378 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005379 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005380
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 wdiUpdateCfgsRspCb: callback for passing back the
5382 response of the update cfg operation received from the
5383 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005384
Jeff Johnson295189b2012-06-20 16:38:30 -07005385 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005386 callback
5387
Jeff Johnson295189b2012-06-20 16:38:30 -07005388 @see WDI_Start
5389 @return Result of the function call
5390*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005391WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005392WDI_UpdateCfgReq
5393(
5394 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5395 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5396 void* pUserData
5397)
5398{
5399 WDI_EventInfoType wdiEventData;
5400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5401
5402 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005403 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005404 ------------------------------------------------------------------------*/
5405 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5406 {
5407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5408 "WDI API call before module is initialized - Fail request");
5409
Jeff Johnsone7245742012-09-05 17:12:55 -07005410 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005411 }
5412
5413 /*------------------------------------------------------------------------
5414 Fill in Event data and post to the Main FSM
5415 ------------------------------------------------------------------------*/
5416 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005417 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5418 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5419 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005420 wdiEventData.pUserData = pUserData;
5421
5422 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5423
5424}/*WDI_UpdateCfgReq*/
5425
5426
5427
5428/**
5429 @brief WDI_AddBAReq will be called when the upper MAC has setup
5430 successfully a BA session and needs to notify the HW for
5431 the appropriate settings to take place. Upon the call of
5432 this API the WLAN DAL will pack and send a HAL Add BA
5433 request message to the lower RIVA sub-system if DAL is
5434 in state STARTED.
5435
5436 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005437 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005438
5439 WDI_PostAssocReq must have been called.
5440
5441 @param wdiAddBAReqParams: the add BA parameters as specified by
5442 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005443
Jeff Johnson295189b2012-06-20 16:38:30 -07005444 wdiAddBARspCb: callback for passing back the response of
5445 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005446
Jeff Johnson295189b2012-06-20 16:38:30 -07005447 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 callback
5449
Jeff Johnson295189b2012-06-20 16:38:30 -07005450 @see WDI_PostAssocReq
5451 @return Result of the function call
5452*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005453WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005454WDI_AddBAReq
5455(
5456 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5457 WDI_AddBARspCb wdiAddBARspCb,
5458 void* pUserData
5459)
5460{
5461 WDI_EventInfoType wdiEventData;
5462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5463
5464 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005465 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005466 ------------------------------------------------------------------------*/
5467 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5468 {
5469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5470 "WDI API call before module is initialized - Fail request");
5471
Jeff Johnsone7245742012-09-05 17:12:55 -07005472 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005473 }
5474
5475 /*------------------------------------------------------------------------
5476 Fill in Event data and post to the Main FSM
5477 ------------------------------------------------------------------------*/
5478 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005479 wdiEventData.pEventData = pwdiAddBAReqParams;
5480 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5481 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005482 wdiEventData.pUserData = pUserData;
5483
5484 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5485
5486}/*WDI_AddBAReq*/
5487
5488
5489/**
5490 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5491 successfully a BA session and needs to notify the HW for
5492 the appropriate settings to take place. Upon the call of
5493 this API the WLAN DAL will pack and send a HAL Add BA
5494 request message to the lower RIVA sub-system if DAL is
5495 in state STARTED.
5496
5497 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005498 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005499
5500 WDI_PostAssocReq must have been called.
5501
5502 @param wdiAddBAReqParams: the add BA parameters as specified by
5503 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005504
Jeff Johnson295189b2012-06-20 16:38:30 -07005505 wdiAddBARspCb: callback for passing back the response of
5506 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005507
Jeff Johnson295189b2012-06-20 16:38:30 -07005508 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005509 callback
5510
Jeff Johnson295189b2012-06-20 16:38:30 -07005511 @see WDI_PostAssocReq
5512 @return Result of the function call
5513*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005514WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005515WDI_TriggerBAReq
5516(
5517 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5518 WDI_TriggerBARspCb wdiTriggerBARspCb,
5519 void* pUserData
5520)
5521{
5522 WDI_EventInfoType wdiEventData;
5523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5524
5525 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005526 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005527 ------------------------------------------------------------------------*/
5528 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5529 {
5530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5531 "WDI API call before module is initialized - Fail request");
5532
Jeff Johnsone7245742012-09-05 17:12:55 -07005533 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005534 }
5535
5536 /*------------------------------------------------------------------------
5537 Fill in Event data and post to the Main FSM
5538 ------------------------------------------------------------------------*/
5539 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005540 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5541 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5542 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005543 wdiEventData.pUserData = pUserData;
5544
5545 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5546
5547}/*WDI_AddBAReq*/
5548
5549/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005550 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005551 wishes to update any of the Beacon parameters used by HW.
5552 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5553 message to the lower RIVA sub-system if DAL is in state
5554 STARTED.
5555
5556 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005557 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005558
5559 WDI_PostAssocReq must have been called.
5560
Jeff Johnsone7245742012-09-05 17:12:55 -07005561 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005562 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005563
Jeff Johnson295189b2012-06-20 16:38:30 -07005564 wdiUpdateBeaconParamsRspCb: callback for passing back the
5565 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005566
Jeff Johnson295189b2012-06-20 16:38:30 -07005567 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005568 callback
5569
Jeff Johnson295189b2012-06-20 16:38:30 -07005570 @see WDI_PostAssocReq
5571 @return Result of the function call
5572*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005573WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005574WDI_UpdateBeaconParamsReq
5575(
5576 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5577 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5578 void* pUserData
5579)
5580{
5581 WDI_EventInfoType wdiEventData;
5582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5583
5584 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005585 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005586 ------------------------------------------------------------------------*/
5587 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5588 {
5589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5590 "WDI API call before module is initialized - Fail request");
5591
Jeff Johnsone7245742012-09-05 17:12:55 -07005592 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005593 }
5594
5595 /*------------------------------------------------------------------------
5596 Fill in Event data and post to the Main FSM
5597 ------------------------------------------------------------------------*/
5598 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005599 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5600 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5601 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005602 wdiEventData.pUserData = pUserData;
5603
5604 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5605
5606}/*WDI_UpdateBeaconParamsReq*/
5607
5608/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005609 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005610 wishes to update the Beacon template used by HW.
5611 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5612 message to the lower RIVA sub-system if DAL is in state
5613 STARTED.
5614
5615 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005616 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005617
5618 WDI_PostAssocReq must have been called.
5619
Jeff Johnsone7245742012-09-05 17:12:55 -07005620 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005621 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005622
Jeff Johnson295189b2012-06-20 16:38:30 -07005623 wdiSendBeaconParamsRspCb: callback for passing back the
5624 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005625
Jeff Johnson295189b2012-06-20 16:38:30 -07005626 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005627 callback
5628
Jeff Johnson295189b2012-06-20 16:38:30 -07005629 @see WDI_PostAssocReq
5630 @return Result of the function call
5631*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005632WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005633WDI_SendBeaconParamsReq
5634(
5635 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5636 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5637 void* pUserData
5638)
5639{
5640 WDI_EventInfoType wdiEventData;
5641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5642
5643 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005644 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005645 ------------------------------------------------------------------------*/
5646 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5647 {
5648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5649 "WDI API call before module is initialized - Fail request");
5650
Jeff Johnsone7245742012-09-05 17:12:55 -07005651 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005652 }
5653
5654 /*------------------------------------------------------------------------
5655 Fill in Event data and post to the Main FSM
5656 ------------------------------------------------------------------------*/
5657 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005658 wdiEventData.pEventData = pwdiSendBeaconParams;
5659 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5660 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005661 wdiEventData.pUserData = pUserData;
5662
5663 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5664
5665}/*WDI_SendBeaconParamsReq*/
5666
5667/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005668 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005669 upper MAC wants to update the probe response template to
5670 be transmitted as Soft AP
5671 Upon the call of this API the WLAN DAL will
5672 pack and send the probe rsp template message to the
5673 lower RIVA sub-system if DAL is in state STARTED.
5674
5675 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005676 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005677
5678
Jeff Johnsone7245742012-09-05 17:12:55 -07005679 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005680 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005681
Jeff Johnson295189b2012-06-20 16:38:30 -07005682 wdiSendBeaconParamsRspCb: callback for passing back the
5683 response of the Send Beacon Params operation received
5684 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005685
Jeff Johnson295189b2012-06-20 16:38:30 -07005686 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005687 callback
5688
Jeff Johnson295189b2012-06-20 16:38:30 -07005689 @see WDI_AddBAReq
5690 @return Result of the function call
5691*/
5692
Jeff Johnsone7245742012-09-05 17:12:55 -07005693WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005694WDI_UpdateProbeRspTemplateReq
5695(
5696 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5697 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5698 void* pUserData
5699)
5700{
5701 WDI_EventInfoType wdiEventData;
5702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5703
5704 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005705 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005706 ------------------------------------------------------------------------*/
5707 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5708 {
5709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5710 "WDI API call before module is initialized - Fail request");
5711
Jeff Johnsone7245742012-09-05 17:12:55 -07005712 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005713 }
5714
5715 /*------------------------------------------------------------------------
5716 Fill in Event data and post to the Main FSM
5717 ------------------------------------------------------------------------*/
5718 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005719 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5720 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5721 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005722 wdiEventData.pUserData = pUserData;
5723
5724 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5725
5726}/*WDI_UpdateProbeRspTemplateReq*/
5727
5728/**
5729 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5730 to the NV memory.
5731
5732
5733 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5734 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005735
Jeff Johnson295189b2012-06-20 16:38:30 -07005736 wdiNvDownloadRspCb: callback for passing back the response of
5737 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005738
Jeff Johnson295189b2012-06-20 16:38:30 -07005739 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005740 callback
5741
Jeff Johnson295189b2012-06-20 16:38:30 -07005742 @see WDI_PostAssocReq
5743 @return Result of the function call
5744*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005745WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005746WDI_NvDownloadReq
5747(
5748 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5749 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5750 void* pUserData
5751)
5752{
5753 WDI_EventInfoType wdiEventData;
5754
5755 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005756 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005757 ------------------------------------------------------------------------*/
5758 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5759 {
5760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5761 "WDI API call before module is initialized - Fail request");
5762
Jeff Johnsone7245742012-09-05 17:12:55 -07005763 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005764 }
5765
5766 /*------------------------------------------------------------------------
5767 Fill in Event data and post to the Main FSM
5768 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005769 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5770 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5771 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5772 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005773 wdiEventData.pUserData = pUserData;
5774
5775 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5776
5777}/*WDI_NVDownloadReq*/
5778
Jeff Johnson295189b2012-06-20 16:38:30 -07005779/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005780 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005781 upper MAC wants to send Notice of Absence
5782 Upon the call of this API the WLAN DAL will
5783 pack and send the probe rsp template message to the
5784 lower RIVA sub-system if DAL is in state STARTED.
5785
5786 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005787 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005788
5789
Jeff Johnsone7245742012-09-05 17:12:55 -07005790 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005792
Jeff Johnson295189b2012-06-20 16:38:30 -07005793 wdiSendBeaconParamsRspCb: callback for passing back the
5794 response of the Send Beacon Params operation received
5795 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005796
Jeff Johnson295189b2012-06-20 16:38:30 -07005797 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005798 callback
5799
Jeff Johnson295189b2012-06-20 16:38:30 -07005800 @see WDI_AddBAReq
5801 @return Result of the function call
5802*/
5803WDI_Status
5804WDI_SetP2PGONOAReq
5805(
5806 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5807 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5808 void* pUserData
5809)
5810{
5811 WDI_EventInfoType wdiEventData;
5812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5813
5814 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005815 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005816 ------------------------------------------------------------------------*/
5817 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5818 {
5819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5820 "WDI API call before module is initialized - Fail request");
5821
Jeff Johnsone7245742012-09-05 17:12:55 -07005822 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005823 }
5824
5825 /*------------------------------------------------------------------------
5826 Fill in Event data and post to the Main FSM
5827 ------------------------------------------------------------------------*/
5828 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005829 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5830 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5831 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005832 wdiEventData.pUserData = pUserData;
5833
5834 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5835
5836}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005837
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305838#ifdef FEATURE_WLAN_TDLS
5839/**
5840 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5841 upper MAC wants to send TDLS Link Establish Request Parameters
5842 Upon the call of this API the WLAN DAL will
5843 pack and send the TDLS Link Establish Request message to the
5844 lower RIVA sub-system if DAL is in state STARTED.
5845
5846 In state BUSY this request will be queued. Request won't
5847 be allowed in any other state.
5848
5849
5850 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5851 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5852
5853 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5854 response of the TDLS Link Establish request received
5855 from the device
5856
5857 pUserData: user data will be passed back with the
5858 callback
5859
5860 @see
5861 @return Result of the function call
5862*/
5863WDI_Status
5864WDI_SetTDLSLinkEstablishReq
5865(
5866 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5867 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5868 void* pUserData
5869)
5870{
5871 WDI_EventInfoType wdiEventData;
5872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5873
5874 /*------------------------------------------------------------------------
5875 Sanity Check
5876 ------------------------------------------------------------------------*/
5877 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5878 {
5879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5880 "WDI API call before module is initialized - Fail request");
5881
5882 return WDI_STATUS_E_NOT_ALLOWED;
5883 }
5884
5885 /*------------------------------------------------------------------------
5886 Fill in Event data and post to the Main FSM
5887 ------------------------------------------------------------------------*/
5888 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5889 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5890 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5891 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5892 wdiEventData.pUserData = pUserData;
5893
5894 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5895
5896}/*WDI_SetTDLSLinkEstablishReq*/
5897#endif
5898
Jeff Johnson295189b2012-06-20 16:38:30 -07005899/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005900 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005901 UMAC wanted to add STA self while opening any new session
5902 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005903 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005904
5905
Jeff Johnsone7245742012-09-05 17:12:55 -07005906 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005907 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005908
Jeff Johnson295189b2012-06-20 16:38:30 -07005909 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005910 callback
5911
5912 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005913 @return Result of the function call
5914*/
5915WDI_Status
5916WDI_AddSTASelfReq
5917(
5918 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5919 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5920 void* pUserData
5921)
5922{
5923 WDI_EventInfoType wdiEventData;
5924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5925
5926 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005927 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005928 ------------------------------------------------------------------------*/
5929 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5930 {
5931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5932 "WDI API call before module is initialized - Fail request");
5933
Jeff Johnsone7245742012-09-05 17:12:55 -07005934 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005935 }
5936
5937 /*------------------------------------------------------------------------
5938 Fill in Event data and post to the Main FSM
5939 ------------------------------------------------------------------------*/
5940 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005941 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5942 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5943 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005944 wdiEventData.pUserData = pUserData;
5945
5946 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5947
5948}/*WDI_AddSTASelfReq*/
5949
5950
Jeff Johnsone7245742012-09-05 17:12:55 -07005951#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005952/**
5953 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5954 the device of a successful add TSpec negotiation. HW
5955 needs to receive the TSpec Info from the UMAC in order
5956 to configure properly the QoS data traffic. Upon the
5957 call of this API the WLAN DAL will pack and send a HAL
5958 Add TS request message to the lower RIVA sub-system if
5959 DAL is in state STARTED.
5960
5961 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005962 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005963
5964 WDI_PostAssocReq must have been called.
5965
5966 @param wdiAddTsReqParams: the add TS parameters as specified by
5967 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005968
Jeff Johnson295189b2012-06-20 16:38:30 -07005969 wdiAddTsRspCb: callback for passing back the response of
5970 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005971
Jeff Johnson295189b2012-06-20 16:38:30 -07005972 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005973 callback
5974
Jeff Johnson295189b2012-06-20 16:38:30 -07005975 @see WDI_PostAssocReq
5976 @return Result of the function call
5977*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005978WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005979WDI_AggrAddTSReq
5980(
5981 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5982 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5983 void* pUserData
5984)
5985{
5986 WDI_EventInfoType wdiEventData;
5987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5988
5989 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005990 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005991 ------------------------------------------------------------------------*/
5992 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5993 {
5994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5995 "WDI API call before module is initialized - Fail request");
5996
Jeff Johnsone7245742012-09-05 17:12:55 -07005997 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005998 }
5999
6000 /*------------------------------------------------------------------------
6001 Fill in Event data and post to the Main FSM
6002 ------------------------------------------------------------------------*/
6003 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006004 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6005 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6006 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006007 wdiEventData.pUserData = pUserData;
6008
6009 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6010
6011}/*WDI_AggrAddTSReq*/
6012
6013#endif /* WLAN_FEATURE_VOWIFI_11R */
6014
Jeff Johnson295189b2012-06-20 16:38:30 -07006015/**
6016 @brief WDI_FTMCommandReq
6017 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006018
6019 @param ftmCommandReq: FTM Command Body
6020 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006021 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006022
Jeff Johnson295189b2012-06-20 16:38:30 -07006023 @see
6024 @return Result of the function call
6025*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006026WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006027WDI_FTMCommandReq
6028(
6029 WDI_FTMCommandReqType *ftmCommandReq,
6030 WDI_FTMCommandRspCb ftmCommandRspCb,
6031 void *pUserData
6032)
6033{
6034 WDI_EventInfoType wdiEventData;
6035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6036
6037 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006038 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006039 ------------------------------------------------------------------------*/
6040 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6041 {
6042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6043 "WDI API call before module is initialized - Fail request");
6044
Jeff Johnsone7245742012-09-05 17:12:55 -07006045 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006046 }
6047
6048 /*------------------------------------------------------------------------
6049 Fill in Event data and post to the Main FSM
6050 ------------------------------------------------------------------------*/
6051 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6052 wdiEventData.pEventData = (void *)ftmCommandReq;
6053 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6054 wdiEventData.pCBfnc = ftmCommandRspCb;
6055 wdiEventData.pUserData = pUserData;
6056
6057 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6058}
Jeff Johnson295189b2012-06-20 16:38:30 -07006059/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006060 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006061
6062 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006063 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006064
6065
6066 @param pwdiResumeReqParams: as specified by
6067 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006068
Jeff Johnson295189b2012-06-20 16:38:30 -07006069 wdiResumeReqRspCb: callback for passing back the response of
6070 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006071
Jeff Johnson295189b2012-06-20 16:38:30 -07006072 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006073 callback
6074
6075 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006076 @return Result of the function call
6077*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006078WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006079WDI_HostResumeReq
6080(
6081 WDI_ResumeParamsType* pwdiResumeReqParams,
6082 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6083 void* pUserData
6084)
6085{
6086 WDI_EventInfoType wdiEventData;
6087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6088
6089 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006090 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006091 ------------------------------------------------------------------------*/
6092 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6093 {
6094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6095 "WDI API call before module is initialized - Fail request");
6096
Jeff Johnsone7245742012-09-05 17:12:55 -07006097 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006098 }
6099
6100 /*------------------------------------------------------------------------
6101 Fill in Event data and post to the Main FSM
6102 ------------------------------------------------------------------------*/
6103 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006104 wdiEventData.pEventData = pwdiResumeReqParams;
6105 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6106 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006107 wdiEventData.pUserData = pUserData;
6108
6109 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6110
6111}/*WDI_HostResumeReq*/
6112
6113/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006114 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006115
6116 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006117 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006118
6119
6120 @param pwdiDelStaSelfReqParams: as specified by
6121 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006122
Jeff Johnson295189b2012-06-20 16:38:30 -07006123 wdiDelStaSelfRspCb: callback for passing back the response of
6124 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006125
Jeff Johnson295189b2012-06-20 16:38:30 -07006126 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006127 callback
6128
Jeff Johnson295189b2012-06-20 16:38:30 -07006129 @see WDI_PostAssocReq
6130 @return Result of the function call
6131*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006132WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006133WDI_DelSTASelfReq
6134(
6135 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6136 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6137 void* pUserData
6138)
6139{
6140 WDI_EventInfoType wdiEventData;
6141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6142
6143 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006144 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006145 ------------------------------------------------------------------------*/
6146 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6147 {
6148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6149 "WDI API call before module is initialized - Fail request");
6150
Jeff Johnsone7245742012-09-05 17:12:55 -07006151 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006152 }
6153
6154 /*------------------------------------------------------------------------
6155 Fill in Event data and post to the Main FSM
6156 ------------------------------------------------------------------------*/
6157 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006158 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6159 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6160 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006161 wdiEventData.pUserData = pUserData;
6162
6163 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6164
6165}/*WDI_AggrAddTSReq*/
6166
6167/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006168 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6169 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006170 Upon the call of this API the WLAN DAL will pack
6171 and send a HAL Set Tx Per Tracking request message to the
6172 lower RIVA sub-system if DAL is in state STARTED.
6173
6174 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006175 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006176
Jeff Johnsone7245742012-09-05 17:12:55 -07006177 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006178 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006179
Jeff Johnson295189b2012-06-20 16:38:30 -07006180 pwdiSetTxPerTrackingRspCb: callback for passing back the
6181 response of the set Tx PER Tracking configurations operation received
6182 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006183
Jeff Johnson295189b2012-06-20 16:38:30 -07006184 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006185 callback
6186
Jeff Johnson295189b2012-06-20 16:38:30 -07006187 @return Result of the function call
6188*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006189WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006190WDI_SetTxPerTrackingReq
6191(
6192 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6193 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6194 void* pUserData
6195)
6196{
6197 WDI_EventInfoType wdiEventData;
6198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6199
6200 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006201 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006202 ------------------------------------------------------------------------*/
6203 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6204 {
6205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6206 "WDI API call before module is initialized - Fail request");
6207
Jeff Johnsone7245742012-09-05 17:12:55 -07006208 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006209 }
6210
6211 /*------------------------------------------------------------------------
6212 Fill in Event data and post to the Main FSM
6213 ------------------------------------------------------------------------*/
6214 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006215 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006216 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006217 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006218 wdiEventData.pUserData = pUserData;
6219
6220 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6221
6222}/*WDI_SetTxPerTrackingReq*/
6223
6224/**
6225 @brief WDI_SetTmLevelReq
6226 If HW Thermal condition changed, driver should react based on new
6227 HW thermal condition.
6228
6229 @param pwdiSetTmLevelReq: New thermal condition information
6230
6231 pwdiSetTmLevelRspCb: callback
6232
6233 usrData: user data will be passed back with the
6234 callback
6235
6236 @return Result of the function call
6237*/
6238WDI_Status
6239WDI_SetTmLevelReq
6240(
6241 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6242 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6243 void *usrData
6244)
6245{
6246 WDI_EventInfoType wdiEventData;
6247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6248
6249 /*------------------------------------------------------------------------
6250 Sanity Check
6251 ------------------------------------------------------------------------*/
6252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6253 {
6254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6255 "WDI API call before module is initialized - Fail request");
6256
6257 return WDI_STATUS_E_NOT_ALLOWED;
6258 }
6259
6260 /*------------------------------------------------------------------------
6261 Fill in Event data and post to the Main FSM
6262 ------------------------------------------------------------------------*/
6263 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6264 wdiEventData.pEventData = pwdiSetTmLevelReq;
6265 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6266 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6267 wdiEventData.pUserData = usrData;
6268
6269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6270}
6271
6272/**
6273 @brief WDI_HostSuspendInd
6274
6275 Suspend Indication from the upper layer will be sent
6276 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006277
Jeff Johnson295189b2012-06-20 16:38:30 -07006278 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006279
6280 @see
6281
Jeff Johnson295189b2012-06-20 16:38:30 -07006282 @return Status of the request
6283*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006284WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006285WDI_HostSuspendInd
6286(
6287 WDI_SuspendParamsType* pwdiSuspendIndParams
6288)
6289{
6290
6291 WDI_EventInfoType wdiEventData;
6292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6293
6294 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006295 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006296 ------------------------------------------------------------------------*/
6297 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6298 {
6299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6300 "WDI API call before module is initialized - Fail request");
6301
Jeff Johnsone7245742012-09-05 17:12:55 -07006302 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006303 }
6304
6305 /*------------------------------------------------------------------------
6306 Fill in Event data and post to the Main FSM
6307 ------------------------------------------------------------------------*/
6308 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006309 wdiEventData.pEventData = pwdiSuspendIndParams;
6310 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6311 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006312 wdiEventData.pUserData = NULL;
6313
6314 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6315
6316}/*WDI_HostSuspendInd*/
6317
6318/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006319 @brief WDI_TrafficStatsInd
6320 Traffic Stats from the upper layer will be sent
6321 down to HAL
6322
6323 @param WDI_TrafficStatsIndType
6324
6325 @see
6326
6327 @return Status of the request
6328*/
6329WDI_Status
6330WDI_TrafficStatsInd
6331(
6332 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6333)
6334{
6335
6336 WDI_EventInfoType wdiEventData;
6337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6338
6339 /*------------------------------------------------------------------------
6340 Sanity Check
6341 ------------------------------------------------------------------------*/
6342 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6343 {
6344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6345 "WDI API call before module is initialized - Fail request");
6346
6347 return WDI_STATUS_E_NOT_ALLOWED;
6348 }
6349
6350 /*------------------------------------------------------------------------
6351 Fill in Event data and post to the Main FSM
6352 ------------------------------------------------------------------------*/
6353 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6354 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6355 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6356 wdiEventData.pCBfnc = NULL;
6357 wdiEventData.pUserData = NULL;
6358
6359 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6360
6361}/*WDI_TrafficStatsInd*/
6362
Chet Lanctot186b5732013-03-18 10:26:30 -07006363#ifdef WLAN_FEATURE_11W
6364/**
6365 @brief WDI_ExcludeUnencryptedInd
6366 Register with HAL to receive/drop unencrypted frames
6367
6368 @param WDI_ExcludeUnencryptIndType
6369
6370 @see
6371
6372 @return Status of the request
6373*/
6374WDI_Status
6375WDI_ExcludeUnencryptedInd
6376(
6377 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6378)
6379{
6380
6381 WDI_EventInfoType wdiEventData;
6382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6383
6384 /*------------------------------------------------------------------------
6385 Sanity Check
6386 ------------------------------------------------------------------------*/
6387 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6388 {
6389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6390 "WDI API call before module is initialized - Fail request");
6391
6392 return WDI_STATUS_E_NOT_ALLOWED;
6393 }
6394
6395 /*------------------------------------------------------------------------
6396 Fill in Event data and post to the Main FSM
6397 ------------------------------------------------------------------------*/
6398 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6399 wdiEventData.pEventData = pWdiExcUnencParams;
6400 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6401 wdiEventData.pCBfnc = NULL;
6402 wdiEventData.pUserData = NULL;
6403
6404 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6405
6406}/*WDI_TrafficStatsInd*/
6407#endif
6408
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006409/**
Yue Mab9c86f42013-08-14 15:59:08 -07006410 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6411
6412 @param addPeriodicTxPtrnParams: Add Pattern parameters
6413
6414 @see
6415
6416 @return Status of the request
6417*/
6418WDI_Status
6419WDI_AddPeriodicTxPtrnInd
6420(
6421 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6422)
6423{
6424 WDI_EventInfoType wdiEventData;
6425
6426 /*-------------------------------------------------------------------------
6427 Sanity Check
6428 ------------------------------------------------------------------------*/
6429 if (eWLAN_PAL_FALSE == gWDIInitialized)
6430 {
6431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6432 "WDI API call before module is initialized - Fail request!");
6433
6434 return WDI_STATUS_E_NOT_ALLOWED;
6435 }
6436
6437 /*-------------------------------------------------------------------------
6438 Fill in Event data and post to the Main FSM
6439 ------------------------------------------------------------------------*/
6440 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6441 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6442 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6443 wdiEventData.pCBfnc = NULL;
6444 wdiEventData.pUserData = NULL;
6445
6446 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6447}
6448
6449/**
6450 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6451
6452 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6453
6454 @see
6455
6456 @return Status of the request
6457*/
6458WDI_Status
6459WDI_DelPeriodicTxPtrnInd
6460(
6461 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6462)
6463{
6464 WDI_EventInfoType wdiEventData;
6465
6466 /*-------------------------------------------------------------------------
6467 Sanity Check
6468 ------------------------------------------------------------------------*/
6469 if (eWLAN_PAL_FALSE == gWDIInitialized)
6470 {
6471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6472 "WDI API call before module is initialized - Fail request!");
6473
6474 return WDI_STATUS_E_NOT_ALLOWED;
6475 }
6476
6477 /*-------------------------------------------------------------------------
6478 Fill in Event data and post to the Main FSM
6479 ------------------------------------------------------------------------*/
6480 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6481 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6482 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6483 wdiEventData.pCBfnc = NULL;
6484 wdiEventData.pUserData = NULL;
6485
6486 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6487}
6488
6489/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006490 @brief WDI_HALDumpCmdReq
6491 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006492
6493 @param halDumpCmdReqParams: Hal Dump Command Body
6494 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006495 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006496
Jeff Johnson295189b2012-06-20 16:38:30 -07006497 @see
6498 @return Result of the function call
6499*/
6500WDI_Status WDI_HALDumpCmdReq
6501(
6502 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6503 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6504 void *pUserData
6505)
6506{
6507 WDI_EventInfoType wdiEventData;
6508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6509
6510 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006511 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006512 ------------------------------------------------------------------------*/
6513 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6514 {
6515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6516 "WDI API call before module is initialized - Fail request");
6517
Jeff Johnsone7245742012-09-05 17:12:55 -07006518 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006519 }
6520
6521 /*------------------------------------------------------------------------
6522 Fill in Event data and post to the Main FSM
6523 ------------------------------------------------------------------------*/
6524 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6525 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6526 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6527 wdiEventData.pCBfnc = halDumpCmdRspCb;
6528 wdiEventData.pUserData = pUserData;
6529
6530 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6531}
6532
Jeff Johnsone7245742012-09-05 17:12:55 -07006533/*============================================================================
6534
Jeff Johnson295189b2012-06-20 16:38:30 -07006535 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006536
Jeff Johnson295189b2012-06-20 16:38:30 -07006537 ============================================================================*/
6538
6539/**
6540 @brief Main FSM Start function for all states except BUSY
6541
Jeff Johnsone7245742012-09-05 17:12:55 -07006542
6543 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 wdiEV: event posted to the main DAL FSM
6545 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006546 structure
6547
Jeff Johnson295189b2012-06-20 16:38:30 -07006548 @see
6549 @return Result of the function call
6550*/
6551WDI_Status
6552WDI_PostMainEvent
6553(
Jeff Johnsone7245742012-09-05 17:12:55 -07006554 WDI_ControlBlockType* pWDICtx,
6555 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006556 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006557)
6558{
Jeff Johnsone7245742012-09-05 17:12:55 -07006559 WDI_Status wdiStatus;
6560 WDI_MainFuncType pfnWDIMainEvHdlr;
6561 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6563
6564 /*-------------------------------------------------------------------------
6565 Sanity check
6566 -------------------------------------------------------------------------*/
6567 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6568 ( wdiEV >= WDI_MAX_EVENT ))
6569 {
6570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6571 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6572 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006573 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006574 }
6575
6576 /*Access to the global state must be locked */
6577 wpalMutexAcquire(&pWDICtx->wptMutex);
6578
6579 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006580 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006581
6582 wdiOldState = pWDICtx->uGlobalState;
6583
6584 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006585 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6586 response comes from CCPU for the request sent by host:
6587 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 -07006588 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 -07006589 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006590 CCPU:
6591 don't change the state */
6592 if ( WDI_RESPONSE_EVENT != wdiEV)
6593 {
6594 /*Transition to BUSY State - the request is now being processed by the FSM,
6595 if the request fails we shall transition back to the old state, if not
6596 the request will manage its own state transition*/
6597 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6598 }
6599 /* If the state function associated with the EV is NULL it means that this
6600 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006601 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006602 {
6603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006604 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006605 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006606 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006607 }
6608 else
6609 {
6610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006611 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006612 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006613 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006614 }
6615
6616 /* If a request handles itself well it will end up in a success or in a
6617 pending
6618 Success - means that the request was processed and the proper state
6619 transition already occurred or will occur when the resp is received
6620 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006621
Jeff Johnson295189b2012-06-20 16:38:30 -07006622 Pending - means the request could not be processed at this moment in time
6623 because the FSM was already busy so no state transition or dequeueing
6624 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006625
Jeff Johnson295189b2012-06-20 16:38:30 -07006626 Success for synchronous case means that the transition may occur and
6627 processing of pending requests may continue - so it should go through
6628 and restores the state and continue processing queued requests*/
6629 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6630 ( WDI_STATUS_PENDING != wdiStatus ))
6631 {
6632 if ( WDI_RESPONSE_EVENT != wdiEV)
6633 {
6634 /*The request has failed or could not be processed - transition back to
6635 the old state - check to see if anything was queued and try to execute
6636 The dequeue logic should post a message to a thread and return - no
6637 actual processing can occur */
6638 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6639 }
6640 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006641
Jeff Johnson295189b2012-06-20 16:38:30 -07006642 }
6643
6644 /* we have completed processing the event */
6645 wpalMutexRelease(&pWDICtx->wptMutex);
6646
Jeff Johnsone7245742012-09-05 17:12:55 -07006647 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006648
6649}/*WDI_PostMainEvent*/
6650
6651
6652/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006653 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006654--------------------------------------------------------------------------*/
6655/**
6656 @brief Main FSM Start function for all states except BUSY
6657
Jeff Johnsone7245742012-09-05 17:12:55 -07006658
6659 @param pWDICtx: pointer to the WLAN DAL context
6660 pEventData: pointer to the event information structure
6661
Jeff Johnson295189b2012-06-20 16:38:30 -07006662 @see
6663 @return Result of the function call
6664*/
6665WDI_Status
6666WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006667(
Jeff Johnson295189b2012-06-20 16:38:30 -07006668 WDI_ControlBlockType* pWDICtx,
6669 WDI_EventInfoType* pEventData
6670)
6671{
6672
6673 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006674 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006675 ----------------------------------------------------------------------*/
6676 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6677 {
6678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006679 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006680 pWDICtx, pEventData);
6681 return WDI_STATUS_E_FAILURE;
6682 }
6683
6684 wpalMutexAcquire(&pWDICtx->wptMutex);
6685
6686 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006687 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006688 ----------------------------------------------------------------------*/
6689 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6690 {
6691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6692 "Control Transport not yet Open - queueing the request");
6693
6694 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006695 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006696
6697 wpalMutexRelease(&pWDICtx->wptMutex);
6698 return WDI_STATUS_PENDING;
6699 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006700
Jeff Johnson295189b2012-06-20 16:38:30 -07006701 wpalMutexRelease(&pWDICtx->wptMutex);
6702
6703 /*Return Success*/
6704 return WDI_ProcessRequest( pWDICtx, pEventData );
6705
6706}/*WDI_MainStart*/
6707
6708/**
6709 @brief Main FSM Response function for state INIT
6710
Jeff Johnsone7245742012-09-05 17:12:55 -07006711
6712 @param pWDICtx: pointer to the WLAN DAL context
6713 pEventData: pointer to the event information structure
6714
Jeff Johnson295189b2012-06-20 16:38:30 -07006715 @see
6716 @return Result of the function call
6717*/
6718WDI_Status
6719WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006720(
Jeff Johnson295189b2012-06-20 16:38:30 -07006721 WDI_ControlBlockType* pWDICtx,
6722 WDI_EventInfoType* pEventData
6723)
6724{
6725 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006726 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006727 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006728 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006729
6730 /*Return Success*/
6731 return WDI_STATUS_E_NOT_ALLOWED;
6732}/* WDI_MainRspInit */
6733
6734/**
6735 @brief Main FSM Close function for all states except BUSY
6736
Jeff Johnsone7245742012-09-05 17:12:55 -07006737
6738 @param pWDICtx: pointer to the WLAN DAL context
6739 pEventData: pointer to the event information structure
6740
Jeff Johnson295189b2012-06-20 16:38:30 -07006741 @see
6742 @return Result of the function call
6743*/
6744WDI_Status
6745WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006746(
Jeff Johnson295189b2012-06-20 16:38:30 -07006747 WDI_ControlBlockType* pWDICtx,
6748 WDI_EventInfoType* pEventData
6749)
6750{
6751
6752 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006753 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006754 ----------------------------------------------------------------------*/
6755 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6756 {
6757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006758 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006759 pWDICtx, pEventData);
6760 return WDI_STATUS_E_FAILURE;
6761 }
6762
6763 /*Return Success*/
6764 return WDI_ProcessRequest( pWDICtx, pEventData );
6765
6766}/*WDI_MainClose*/
6767/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006768 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006769--------------------------------------------------------------------------*/
6770/**
6771 @brief Main FSM Start function for state STARTED
6772
Jeff Johnsone7245742012-09-05 17:12:55 -07006773
6774 @param pWDICtx: pointer to the WLAN DAL context
6775 pEventData: pointer to the event information structure
6776
Jeff Johnson295189b2012-06-20 16:38:30 -07006777 @see
6778 @return Result of the function call
6779*/
6780WDI_Status
6781WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006782(
Jeff Johnson295189b2012-06-20 16:38:30 -07006783 WDI_ControlBlockType* pWDICtx,
6784 WDI_EventInfoType* pEventData
6785)
6786{
6787 WDI_StartRspCb wdiStartRspCb = NULL;
6788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6789
6790 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006791 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 ----------------------------------------------------------------------*/
6793 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6794 {
6795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006796 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006797 pWDICtx, pEventData);
6798 return WDI_STATUS_E_FAILURE;
6799 }
6800
6801 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006802 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 ----------------------------------------------------------------------*/
6804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006805 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006806
6807 wpalMutexAcquire(&pWDICtx->wptMutex);
6808
6809 /*Transition back to started because the post function transitioned us to
6810 busy*/
6811 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6812
6813 /*Check to see if any request is pending*/
6814 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006815
Jeff Johnson295189b2012-06-20 16:38:30 -07006816 wpalMutexRelease(&pWDICtx->wptMutex);
6817
6818 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006819 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6820
Jeff Johnson295189b2012-06-20 16:38:30 -07006821 /*Notify UMAC*/
6822 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6823
6824 /*Return Success*/
6825 return WDI_STATUS_SUCCESS;
6826
6827}/*WDI_MainStartStarted*/
6828
6829/**
6830 @brief Main FSM Stop function for state STARTED
6831
Jeff Johnsone7245742012-09-05 17:12:55 -07006832
6833 @param pWDICtx: pointer to the WLAN DAL context
6834 pEventData: pointer to the event information structure
6835
Jeff Johnson295189b2012-06-20 16:38:30 -07006836 @see
6837 @return Result of the function call
6838*/
6839WDI_Status
6840WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006841(
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 WDI_ControlBlockType* pWDICtx,
6843 WDI_EventInfoType* pEventData
6844)
6845{
6846 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006847 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006848 ----------------------------------------------------------------------*/
6849 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6850 {
6851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006852 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006853 pWDICtx, pEventData);
6854 return WDI_STATUS_E_FAILURE;
6855 }
6856
6857 /*State at this point is BUSY - because we enter this state before posting
6858 an event to the FSM in order to prevent potential race conditions*/
6859
6860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6861 "Processing stop request in FSM");
6862
6863 /*Return Success*/
6864 return WDI_ProcessRequest( pWDICtx, pEventData );
6865
6866}/*WDI_MainStopStarted*/
6867/**
6868 @brief Main FSM Request function for state started
6869
Jeff Johnsone7245742012-09-05 17:12:55 -07006870
6871 @param pWDICtx: pointer to the WLAN DAL context
6872 pEventData: pointer to the event information structure
6873
Jeff Johnson295189b2012-06-20 16:38:30 -07006874 @see
6875 @return Result of the function call
6876*/
6877WDI_Status
6878WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006879(
Jeff Johnson295189b2012-06-20 16:38:30 -07006880 WDI_ControlBlockType* pWDICtx,
6881 WDI_EventInfoType* pEventData
6882)
6883{
6884
6885 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006886 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006887 ----------------------------------------------------------------------*/
6888 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6889 {
6890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006891 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006892 pWDICtx, pEventData);
6893 return WDI_STATUS_E_FAILURE;
6894 }
6895
6896 /*State at this point is BUSY - because we enter this state before posting
6897 an event to the FSM in order to prevent potential race conditions*/
6898
6899 /*Return Success*/
6900 return WDI_ProcessRequest( pWDICtx, pEventData );
6901
6902}/*WDI_MainReqStarted*/
6903
6904/**
6905 @brief Main FSM Response function for all states except INIT
6906
Jeff Johnsone7245742012-09-05 17:12:55 -07006907
6908 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006909 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006910
Jeff Johnson295189b2012-06-20 16:38:30 -07006911 @see
6912 @return Result of the function call
6913*/
6914WDI_Status
6915WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006916(
Jeff Johnson295189b2012-06-20 16:38:30 -07006917 WDI_ControlBlockType* pWDICtx,
6918 WDI_EventInfoType* pEventData
6919)
6920{
Jeff Johnsone7245742012-09-05 17:12:55 -07006921 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006922 wpt_boolean expectedResponse;
6923
6924 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006925 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006926 ----------------------------------------------------------------------*/
6927 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6928 {
6929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006930 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006931 pWDICtx, pEventData);
6932 return WDI_STATUS_E_FAILURE;
6933 }
6934
6935 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6936 {
6937 /* we received an expected response */
6938 expectedResponse = eWLAN_PAL_TRUE;
6939
6940 /*We expect that we will transition to started after this processing*/
6941 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6942
6943 /* we are no longer expecting a response */
6944 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6945 }
6946 else
6947 {
6948 /* we received an indication or unexpected response */
6949 expectedResponse = eWLAN_PAL_FALSE;
6950 /* for indications no need to update state from what it is right
6951 now, unless it explicitly does it in the indication handler (say
6952 for device failure ind) */
6953 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6954 }
6955
6956 /*Process the response and indication */
6957 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6958
6959 /*Lock the CB as we are about to do a state transition*/
6960 wpalMutexAcquire(&pWDICtx->wptMutex);
6961
6962 /*Transition to the expected state after the response processing
6963 - this should always be started state with the following exceptions:
6964 1. processing of a failed start response
6965 2. device failure detected while processing response
6966 3. stop response received*/
6967 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006968
Jeff Johnson295189b2012-06-20 16:38:30 -07006969 /*Dequeue request that may have been queued while we were waiting for the
6970 response */
6971 if ( expectedResponse )
6972 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006973 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006974 }
6975
6976 wpalMutexRelease(&pWDICtx->wptMutex);
6977
6978 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006979 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006980
6981}/*WDI_MainRsp*/
6982
6983/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006984 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006985--------------------------------------------------------------------------*/
6986/**
6987 @brief Main FSM Stop function for state STOPPED
6988
Jeff Johnsone7245742012-09-05 17:12:55 -07006989
6990 @param pWDICtx: pointer to the WLAN DAL context
6991 pEventData: pointer to the event information structure
6992
Jeff Johnson295189b2012-06-20 16:38:30 -07006993 @see
6994 @return Result of the function call
6995*/
6996WDI_Status
6997WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006998(
Jeff Johnson295189b2012-06-20 16:38:30 -07006999 WDI_ControlBlockType* pWDICtx,
7000 WDI_EventInfoType* pEventData
7001)
7002{
7003 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007004 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 ----------------------------------------------------------------------*/
7006 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7007 {
7008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007009 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007010 pWDICtx, pEventData);
7011 return WDI_STATUS_E_FAILURE;
7012 }
7013
7014 /*We should normally not get a STOP request if we are already stopped
7015 since we should normally be stopped by the UMAC. However in some
7016 error situations we put ourselves in the stopped state without the
7017 UMAC knowing, so when we get a STOP request in this state we still
7018 process it since we need to clean up the underlying state */
7019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7020 "Processing stop request while stopped in FSM");
7021
7022 /*Return Success*/
7023 return WDI_ProcessRequest( pWDICtx, pEventData );
7024
7025}/*WDI_MainStopStopped*/
7026
7027/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007028 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007029--------------------------------------------------------------------------*/
7030/**
7031 @brief Main FSM Start function for state BUSY
7032
Jeff Johnsone7245742012-09-05 17:12:55 -07007033
7034 @param pWDICtx: pointer to the WLAN DAL context
7035 pEventData: pointer to the event information structure
7036
Jeff Johnson295189b2012-06-20 16:38:30 -07007037 @see
7038 @return Result of the function call
7039*/
7040WDI_Status
7041WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007042(
Jeff Johnson295189b2012-06-20 16:38:30 -07007043 WDI_ControlBlockType* pWDICtx,
7044 WDI_EventInfoType* pEventData
7045)
7046{
7047 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007048 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007049 ----------------------------------------------------------------------*/
7050 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7051 {
7052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007053 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007054 pWDICtx, pEventData);
7055 return WDI_STATUS_E_FAILURE;
7056 }
7057
7058 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007059 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007060 ----------------------------------------------------------------------*/
7061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7062 "WDI Busy state - queue start request");
7063
7064 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007065 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007066
7067 /*Return Success*/
7068 return WDI_STATUS_PENDING;
7069}/*WDI_MainStartBusy*/
7070
7071/**
7072 @brief Main FSM Stop function for state BUSY
7073
Jeff Johnsone7245742012-09-05 17:12:55 -07007074
7075 @param pWDICtx: pointer to the WLAN DAL context
7076 pEventData: pointer to the event information structure
7077
Jeff Johnson295189b2012-06-20 16:38:30 -07007078 @see
7079 @return Result of the function call
7080*/
7081WDI_Status
7082WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007083(
Jeff Johnson295189b2012-06-20 16:38:30 -07007084 WDI_ControlBlockType* pWDICtx,
7085 WDI_EventInfoType* pEventData
7086)
7087{
7088 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007089 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007090 ----------------------------------------------------------------------*/
7091 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7092 {
7093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007094 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007095 pWDICtx, pEventData);
7096 return WDI_STATUS_E_FAILURE;
7097 }
7098
7099 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007100 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007101 ----------------------------------------------------------------------*/
7102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7103 "WDI Busy state - queue stop request");
7104
Jeff Johnsone7245742012-09-05 17:12:55 -07007105 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007106 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007107
Jeff Johnson295189b2012-06-20 16:38:30 -07007108}/*WDI_MainStopBusy*/
7109
7110/**
7111 @brief Main FSM Request function for state BUSY
7112
Jeff Johnsone7245742012-09-05 17:12:55 -07007113
7114 @param pWDICtx: pointer to the WLAN DAL context
7115 pEventData: pointer to the event information structure
7116
Jeff Johnson295189b2012-06-20 16:38:30 -07007117 @see
7118 @return Result of the function call
7119*/
7120WDI_Status
7121WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007122(
Jeff Johnson295189b2012-06-20 16:38:30 -07007123 WDI_ControlBlockType* pWDICtx,
7124 WDI_EventInfoType* pEventData
7125)
7126{
7127 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007128 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007129 ----------------------------------------------------------------------*/
7130 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7131 {
7132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007133 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007134 pWDICtx, pEventData);
7135 return WDI_STATUS_E_FAILURE;
7136 }
7137
7138 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007139 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007140 ----------------------------------------------------------------------*/
7141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7142 "WDI Busy state - queue request %d because waiting for response %d",
7143 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7144
Jeff Johnsone7245742012-09-05 17:12:55 -07007145 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007146 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007147
Jeff Johnson295189b2012-06-20 16:38:30 -07007148}/*WDI_MainReqBusy*/
7149/**
7150 @brief Main FSM Close function for state BUSY
7151
Jeff Johnsone7245742012-09-05 17:12:55 -07007152
7153 @param pWDICtx: pointer to the WLAN DAL context
7154 pEventData: pointer to the event information structure
7155
Jeff Johnson295189b2012-06-20 16:38:30 -07007156 @see
7157 @return Result of the function call
7158*/
7159WDI_Status
7160WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007161(
Jeff Johnson295189b2012-06-20 16:38:30 -07007162 WDI_ControlBlockType* pWDICtx,
7163 WDI_EventInfoType* pEventData
7164)
7165{
7166 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007167 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 ----------------------------------------------------------------------*/
7169 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7170 {
7171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007172 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007173 pWDICtx, pEventData);
7174 return WDI_STATUS_E_FAILURE;
7175 }
7176
7177 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007178 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007179 ----------------------------------------------------------------------*/
7180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7181 "WDI Busy state - queue close request");
7182
Jeff Johnsone7245742012-09-05 17:12:55 -07007183 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007184 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007185
Jeff Johnson295189b2012-06-20 16:38:30 -07007186}/*WDI_MainCloseBusy*/
7187
7188/**
7189 @brief Main FSM Shutdown function for INIT & STARTED states
7190
7191
7192 @param pWDICtx: pointer to the WLAN DAL context
7193 pEventData: pointer to the event information structure
7194
7195 @see
7196 @return Result of the function call
7197*/
7198WDI_Status
7199WDI_MainShutdown
7200(
7201 WDI_ControlBlockType* pWDICtx,
7202 WDI_EventInfoType* pEventData
7203)
7204{
7205 /*--------------------------------------------------------------------
7206 Sanity Check
7207 ----------------------------------------------------------------------*/
7208 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7209 {
7210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007211 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 pWDICtx, pEventData);
7213 return WDI_STATUS_E_FAILURE;
7214 }
7215
7216 /*State at this point is BUSY - because we enter this state before posting
7217 an event to the FSM in order to prevent potential race conditions*/
7218
7219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7220 "Processing shutdown request in FSM");
7221
7222 /*Return Success*/
7223 return WDI_ProcessRequest( pWDICtx, pEventData );
7224
7225}/*WDI_MainShutdown*/
7226
7227/**
7228 @brief Main FSM Shutdown function for BUSY state
7229
7230
7231 @param pWDICtx: pointer to the WLAN DAL context
7232 pEventData: pointer to the event information structure
7233
7234 @see
7235 @return Result of the function call
7236*/
7237WDI_Status
7238WDI_MainShutdownBusy
7239(
7240 WDI_ControlBlockType* pWDICtx,
7241 WDI_EventInfoType* pEventData
7242)
7243{
7244 /*--------------------------------------------------------------------
7245 Sanity Check
7246 ----------------------------------------------------------------------*/
7247 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7248 {
7249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007250 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007251 pWDICtx, pEventData);
7252 return WDI_STATUS_E_FAILURE;
7253 }
7254
7255 /* If you are waiting for a HAL response at this stage, you are not
7256 * going to get it. Riva is already shutdown/crashed.
7257 */
7258 wpalTimerStop(&gWDICb.wptResponseTimer);
7259
7260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7261 "Processing shutdown request in FSM: Busy state ");
7262
7263 return WDI_ProcessRequest( pWDICtx, pEventData );
7264
7265}/*WDI_MainShutdownBusy*/
7266
7267
Jeff Johnsone7245742012-09-05 17:12:55 -07007268/*=======================================================================
7269
Jeff Johnson295189b2012-06-20 16:38:30 -07007270 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007271
Jeff Johnson295189b2012-06-20 16:38:30 -07007272*=======================================================================*/
7273
7274/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007275 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007276========================================================================*/
7277/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007278 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007279 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007280
7281 @param pWDICtx: pointer to the WLAN DAL context
7282 pEventData: pointer to the event information structure
7283
Jeff Johnson295189b2012-06-20 16:38:30 -07007284 @see
7285 @return Result of the function call
7286*/
7287WDI_Status
7288WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007289(
Jeff Johnson295189b2012-06-20 16:38:30 -07007290 WDI_ControlBlockType* pWDICtx,
7291 WDI_EventInfoType* pEventData
7292)
7293{
7294 WDI_StartReqParamsType* pwdiStartParams = NULL;
7295 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007296 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 wpt_uint16 usDataOffset = 0;
7298 wpt_uint16 usSendSize = 0;
7299
Jeff Johnsone7245742012-09-05 17:12:55 -07007300 tHalMacStartReqMsg halStartReq;
7301 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7303
7304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007306 -------------------------------------------------------------------------*/
7307 if (( NULL == pEventData ) ||
7308 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7309 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7310 {
7311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 }
7316
7317 /*-----------------------------------------------------------------------
7318 Get message buffer
7319 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007320 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007321 pwdiStartParams->usConfigBufferLen;
7322
Jeff Johnsone7245742012-09-05 17:12:55 -07007323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 usLen,
7325 &pSendBuffer, &usDataOffset, &usSendSize))||
7326 ( usSendSize < (usDataOffset + usLen )))
7327 {
7328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007329 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007330 pEventData, pwdiStartParams, wdiStartRspCb);
7331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007333 }
7334
7335 /*-----------------------------------------------------------------------
7336 Fill in the message
7337 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007338 halStartReq.startReqParams.driverType =
7339 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007340
Jeff Johnsone7245742012-09-05 17:12:55 -07007341 halStartReq.startReqParams.uConfigBufferLen =
7342 pwdiStartParams->usConfigBufferLen;
7343 wpalMemoryCopy( pSendBuffer+usDataOffset,
7344 &halStartReq.startReqParams,
7345 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007346
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 usDataOffset += sizeof(halStartReq.startReqParams);
7348 wpalMemoryCopy( pSendBuffer+usDataOffset,
7349 pwdiStartParams->pConfigBuffer,
7350 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007351
7352 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007353 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007354
7355 /*Save Low Level Ind CB and associated user data - it will be used further
7356 on when an indication is coming from the lower MAC*/
7357 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007358 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007359
Jeff Johnsone7245742012-09-05 17:12:55 -07007360 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007362 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007364 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007365 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7366
Jeff Johnsone7245742012-09-05 17:12:55 -07007367
Jeff Johnson295189b2012-06-20 16:38:30 -07007368}/*WDI_ProcessStartReq*/
7369
7370/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007371 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007373
7374 @param pWDICtx: pointer to the WLAN DAL context
7375 pEventData: pointer to the event information structure
7376
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 @see
7378 @return Result of the function call
7379*/
7380WDI_Status
7381WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007382(
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 WDI_ControlBlockType* pWDICtx,
7384 WDI_EventInfoType* pEventData
7385)
7386{
7387 WDI_StopReqParamsType* pwdiStopParams = NULL;
7388 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007389 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 wpt_uint16 usDataOffset = 0;
7391 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007392 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7395
7396 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 -------------------------------------------------------------------------*/
7399 if (( NULL == pEventData ) ||
7400 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7401 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7402 {
7403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007404 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007405 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007406 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007407 }
7408
7409 /*-----------------------------------------------------------------------
7410 Get message buffer
7411 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007412 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007413 sizeof(halStopReq.stopReqParams),
7414 &pSendBuffer, &usDataOffset, &usSendSize))||
7415 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7416 {
7417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007418 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007419 pEventData, pwdiStopParams, wdiStopRspCb);
7420 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007421 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007422 }
7423
7424 /*-----------------------------------------------------------------------
7425 Fill in the message
7426 -----------------------------------------------------------------------*/
7427 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7428 pwdiStopParams->wdiStopReason);
7429
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 wpalMemoryCopy( pSendBuffer+usDataOffset,
7431 &halStopReq.stopReqParams,
7432 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007433
7434 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007435 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007436
7437 /*! TO DO: stop the data services */
7438 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7439 {
7440 /*Stop the STA Table !UT- check this logic again
7441 It is safer to do it here than on the response - because a stop is imminent*/
7442 WDI_STATableStop(pWDICtx);
7443
7444 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007445 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7446 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007447 {
7448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7449 "WDI Init failed to reset power state event");
7450
Jeff Johnsone7245742012-09-05 17:12:55 -07007451 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007452 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 }
7454 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007455 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7456 if( eWLAN_PAL_STATUS_SUCCESS != status )
7457 {
7458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007459 "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 -08007460 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007461 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007462 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007463 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007464 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007466 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7467 WDI_SET_POWER_STATE_TIMEOUT);
7468 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007469 {
7470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7471 "WDI Init failed to wait on an event");
7472
Jeff Johnsone7245742012-09-05 17:12:55 -07007473 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007474 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007475 }
7476 }
7477
7478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007479 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007480 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007481 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007482 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7483
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007484fail:
7485 // Release the message buffer so we don't leak
7486 wpalMemoryFree(pSendBuffer);
7487
7488failRequest:
7489 //WDA should have failure check to avoid the memory leak
7490 return WDI_STATUS_E_FAILURE;
7491
Jeff Johnson295189b2012-06-20 16:38:30 -07007492}/*WDI_ProcessStopReq*/
7493
7494/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007495 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007496 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007497
7498 @param pWDICtx: pointer to the WLAN DAL context
7499 pEventData: pointer to the event information structure
7500
Jeff Johnson295189b2012-06-20 16:38:30 -07007501 @see
7502 @return Result of the function call
7503*/
7504WDI_Status
7505WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007506(
Jeff Johnson295189b2012-06-20 16:38:30 -07007507 WDI_ControlBlockType* pWDICtx,
7508 WDI_EventInfoType* pEventData
7509)
7510{
Jeff Johnsone7245742012-09-05 17:12:55 -07007511 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7513
7514 /*Lock control block for cleanup*/
7515 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007516
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 /*Clear all pending request*/
7518 WDI_ClearPendingRequests(pWDICtx);
7519
7520 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007521 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007522
7523 /* Close Data transport*/
7524 /* FTM mode does not open Data Path */
7525 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7526 {
7527 WDTS_Close(pWDICtx);
7528 }
7529
7530 /*Close the STA Table !UT- check this logic again*/
7531 WDI_STATableClose(pWDICtx);
7532
7533 /*close the PAL */
7534 wptStatus = wpalClose(pWDICtx->pPALContext);
7535 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7536 {
7537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7538 "Failed to wpal Close %d", wptStatus);
7539 WDI_ASSERT(0);
7540 }
7541
7542 /*Transition back to init state*/
7543 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7544
7545 wpalMutexRelease(&pWDICtx->wptMutex);
7546
7547 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007548 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007549
Jeff Johnsone7245742012-09-05 17:12:55 -07007550 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007551}/*WDI_ProcessCloseReq*/
7552
7553
7554/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007555 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007556===========================================================================*/
7557
7558/**
7559 @brief Process Init Scan Request function (called when Main FSM
7560 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007561
7562 @param pWDICtx: pointer to the WLAN DAL context
7563 pEventData: pointer to the event information structure
7564
Jeff Johnson295189b2012-06-20 16:38:30 -07007565 @see
7566 @return Result of the function call
7567*/
7568WDI_Status
7569WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007570(
Jeff Johnson295189b2012-06-20 16:38:30 -07007571 WDI_ControlBlockType* pWDICtx,
7572 WDI_EventInfoType* pEventData
7573)
7574{
7575 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7576 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007577 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007578 wpt_uint16 usDataOffset = 0;
7579 wpt_uint16 usSendSize = 0;
7580 wpt_uint8 i = 0;
7581
7582 tHalInitScanReqMsg halInitScanReqMsg;
7583
Jeff Johnsone7245742012-09-05 17:12:55 -07007584 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007585 * It shold be removed once host and riva changes are in sync*/
7586 tHalInitScanConReqMsg halInitScanConReqMsg;
7587
7588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7589
7590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007592 -------------------------------------------------------------------------*/
7593 if (( NULL == pEventData ) ||
7594 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7595 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7596 {
7597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007598 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007601 }
7602
7603#if 0
7604 wpalMutexAcquire(&pWDICtx->wptMutex);
7605 /*-----------------------------------------------------------------------
7606 Check to see if SCAN is already in progress - if so reject the req
7607 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007608 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007609 -----------------------------------------------------------------------*/
7610 if ( pWDICtx->bScanInProgress )
7611 {
7612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7613 "Scan is already in progress - subsequent scan is not allowed"
7614 " until the first scan completes");
7615
7616 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007617 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007618 }
7619
Jeff Johnsone7245742012-09-05 17:12:55 -07007620 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7621 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007622
7623 wpalMutexRelease(&pWDICtx->wptMutex);
7624#endif
Viral Modid86bde22012-12-10 13:09:21 -08007625 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007626 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007627 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007628 * It shold be removed once host and riva changes are in sync*/
7629 /*-----------------------------------------------------------------------
7630 Get message buffer
7631 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007632 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007633 sizeof(halInitScanConReqMsg.initScanParams),
7634 &pSendBuffer, &usDataOffset, &usSendSize))||
7635 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7636 {
7637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007638 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007639 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007642 }
7643
7644
7645 /*-----------------------------------------------------------------------
7646 Fill in the message
7647 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007648 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007649 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7650
7651 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7652 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7653
Jeff Johnsone7245742012-09-05 17:12:55 -07007654 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007655 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007656 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007657 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007658 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007659 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7660
7661 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7662 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7663
Jeff Johnson295189b2012-06-20 16:38:30 -07007664 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7665 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007666
Jeff Johnsone7245742012-09-05 17:12:55 -07007667 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7669
7670 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7671 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007672 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007673 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7674 }
7675
Jeff Johnsone7245742012-09-05 17:12:55 -07007676 wpalMemoryCopy( pSendBuffer+usDataOffset,
7677 &halInitScanConReqMsg.initScanParams,
7678 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007679 }
7680 else
7681 {
7682 /*-----------------------------------------------------------------------
7683 Get message buffer
7684 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 sizeof(halInitScanReqMsg.initScanParams),
7687 &pSendBuffer, &usDataOffset, &usSendSize))||
7688 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7689 {
7690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007691 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007695 }
7696
7697
7698 /*-----------------------------------------------------------------------
7699 Fill in the message
7700 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007701 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007702 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7703
7704 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7705 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7706
Jeff Johnsone7245742012-09-05 17:12:55 -07007707 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007708 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007709 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007710 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007711 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007712 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7713
7714 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7715 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7716
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7719
7720 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7721 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007723 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7724 }
7725
Jeff Johnsone7245742012-09-05 17:12:55 -07007726 wpalMemoryCopy( pSendBuffer+usDataOffset,
7727 &halInitScanReqMsg.initScanParams,
7728 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 }
7730
7731 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007732 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007733
7734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007735 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007736 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7739
7740}/*WDI_ProcessInitScanReq*/
7741
7742/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007745
7746 @param pWDICtx: pointer to the WLAN DAL context
7747 pEventData: pointer to the event information structure
7748
Jeff Johnson295189b2012-06-20 16:38:30 -07007749 @see
7750 @return Result of the function call
7751*/
7752WDI_Status
7753WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007754(
Jeff Johnson295189b2012-06-20 16:38:30 -07007755 WDI_ControlBlockType* pWDICtx,
7756 WDI_EventInfoType* pEventData
7757)
7758{
7759 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7760 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007761 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007762 wpt_uint16 usDataOffset = 0;
7763 wpt_uint16 usSendSize = 0;
7764
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7767
7768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007769 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 -------------------------------------------------------------------------*/
7771 if (( NULL == pEventData ) ||
7772 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7773 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7774 {
7775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007779 }
7780
7781#if 0
7782 wpalMutexAcquire(&pWDICtx->wptMutex);
7783 /*-----------------------------------------------------------------------
7784 Check to see if SCAN is already in progress - start scan is only
7785 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007786 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007787 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007789 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7790 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7791 {
7792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7793 "Scan start not allowed in this state %d %d",
7794 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007795
Jeff Johnson295189b2012-06-20 16:38:30 -07007796 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007797 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007798 }
7799
Jeff Johnsone7245742012-09-05 17:12:55 -07007800 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007801
7802 wpalMutexRelease(&pWDICtx->wptMutex);
7803#endif
7804
7805 /*-----------------------------------------------------------------------
7806 Get message buffer
7807 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007808 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 sizeof(halStartScanReqMsg.startScanParams),
7810 &pSendBuffer, &usDataOffset, &usSendSize))||
7811 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7812 {
7813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007814 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007815 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 }
7819
Jeff Johnsone7245742012-09-05 17:12:55 -07007820 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007821 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007822 wpalMemoryCopy( pSendBuffer+usDataOffset,
7823 &halStartScanReqMsg.startScanParams,
7824 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007825
7826 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007827 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007828
7829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007830 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007832 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007833 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7834}/*WDI_ProcessStartScanReq*/
7835
7836
7837/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007838 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007839 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007840
7841 @param pWDICtx: pointer to the WLAN DAL context
7842 pEventData: pointer to the event information structure
7843
Jeff Johnson295189b2012-06-20 16:38:30 -07007844 @see
7845 @return Result of the function call
7846*/
7847WDI_Status
7848WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007849(
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 WDI_ControlBlockType* pWDICtx,
7851 WDI_EventInfoType* pEventData
7852)
7853{
7854 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7855 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 wpt_uint16 usDataOffset = 0;
7858 wpt_uint16 usSendSize = 0;
7859
Jeff Johnsone7245742012-09-05 17:12:55 -07007860 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7862
7863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007865 -------------------------------------------------------------------------*/
7866 if (( NULL == pEventData ) ||
7867 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7868 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7869 {
7870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007874 }
7875
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7877 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007878 * forwarded to HAL and result in hang*/
7879#if 0
7880 wpalMutexAcquire(&pWDICtx->wptMutex);
7881 /*-----------------------------------------------------------------------
7882 Check to see if SCAN is already in progress - end scan is only
7883 allowed when a scan is ongoing and the state of the scan procedure
7884 is started
7885 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7888 {
7889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7890 "End start not allowed in this state %d %d",
7891 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007892
Jeff Johnson295189b2012-06-20 16:38:30 -07007893 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007894 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007895 }
7896
Jeff Johnsone7245742012-09-05 17:12:55 -07007897 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007898
7899 wpalMutexRelease(&pWDICtx->wptMutex);
7900#endif
7901
7902 /*-----------------------------------------------------------------------
7903 Get message buffer
7904 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 sizeof(halEndScanReqMsg.endScanParams),
7907 &pSendBuffer, &usDataOffset, &usSendSize))||
7908 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7909 {
7910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007911 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007912 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007915 }
7916
7917 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7918
Jeff Johnsone7245742012-09-05 17:12:55 -07007919 wpalMemoryCopy( pSendBuffer+usDataOffset,
7920 &halEndScanReqMsg.endScanParams,
7921 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007922
7923 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007924 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007925
7926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007927 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007928 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7931}/*WDI_ProcessEndScanReq*/
7932
7933
7934/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007937
7938 @param pWDICtx: pointer to the WLAN DAL context
7939 pEventData: pointer to the event information structure
7940
Jeff Johnson295189b2012-06-20 16:38:30 -07007941 @see
7942 @return Result of the function call
7943*/
7944WDI_Status
7945WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007946(
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 WDI_ControlBlockType* pWDICtx,
7948 WDI_EventInfoType* pEventData
7949)
7950{
7951 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7952 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007953 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007954 wpt_uint16 usDataOffset = 0;
7955 wpt_uint16 usSendSize = 0;
7956 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007957 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7960
7961 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007962 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007963 -------------------------------------------------------------------------*/
7964 if (( NULL == pEventData ) ||
7965 ( NULL == pEventData->pEventData) ||
7966 ( NULL == pEventData->pCBfnc))
7967 {
7968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007969 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007972 }
7973
7974 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7975 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007976 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7977 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007978 * forwarded to HAL and result in hang*/
7979#if 0
7980 wpalMutexAcquire(&pWDICtx->wptMutex);
7981 /*-----------------------------------------------------------------------
7982 Check to see if SCAN is already in progress
7983 Finish scan gets invoked any scan states. ie. abort scan
7984 It should be allowed in any states.
7985 -----------------------------------------------------------------------*/
7986 if ( !pWDICtx->bScanInProgress )
7987 {
7988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7989 "Finish start not allowed in this state %d",
7990 pWDICtx->bScanInProgress );
7991
7992 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007993 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007994 }
7995
7996 /*-----------------------------------------------------------------------
7997 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007998 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008000 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8001 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 wpalMutexRelease(&pWDICtx->wptMutex);
8003#endif
8004
8005 if ( pWDICtx->bInBmps )
8006 {
8007 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008008 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8009 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8010 {
8011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008012 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008013 WDI_ASSERT(0);
8014 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008015 }
8016
8017 /*-----------------------------------------------------------------------
8018 Get message buffer
8019 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008020 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008021 sizeof(halFinishScanReqMsg.finishScanParams),
8022 &pSendBuffer, &usDataOffset, &usSendSize))||
8023 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8024 {
8025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008026 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008027 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8028 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008030 }
8031
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8034
Jeff Johnsone7245742012-09-05 17:12:55 -07008035 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008036 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8037
Jeff Johnsone7245742012-09-05 17:12:55 -07008038 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008039 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8040
8041 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8042 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8043
Jeff Johnsone7245742012-09-05 17:12:55 -07008044 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008045 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008047 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8050
Jeff Johnsone7245742012-09-05 17:12:55 -07008051 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8053
8054 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8055 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8058 }
8059
8060 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8061 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8062
Jeff Johnsone7245742012-09-05 17:12:55 -07008063 wpalMemoryCopy( pSendBuffer+usDataOffset,
8064 &halFinishScanReqMsg.finishScanParams,
8065 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008066
8067 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008068 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008069
8070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008071 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008072 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008074 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8075}/*WDI_ProcessFinishScanReq*/
8076
8077
8078/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008079 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008080==========================================================================*/
8081/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008082 @brief Process BSS Join for a given Session
8083
8084 @param pWDICtx: pointer to the WLAN DAL context
8085 pEventData: pointer to the event information structure
8086
Jeff Johnson295189b2012-06-20 16:38:30 -07008087 @see
8088 @return Result of the function call
8089*/
8090WDI_Status
8091WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008092(
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 WDI_ControlBlockType* pWDICtx,
8094 WDI_JoinReqParamsType* pwdiJoinParams,
8095 WDI_JoinRspCb wdiJoinRspCb,
8096 void* pUserData
8097)
8098{
8099 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008101 wpt_uint16 usDataOffset = 0;
8102 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008103 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008104
Jeff Johnsone7245742012-09-05 17:12:55 -07008105 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008106 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8107
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008108 wpalMutexAcquire(&pWDICtx->wptMutex);
8109
Jeff Johnson295189b2012-06-20 16:38:30 -07008110 /*------------------------------------------------------------------------
8111 Check to see if we have any session with this BSSID already stored, we
8112 should not
8113 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008114 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8115 pwdiJoinParams->wdiReqInfo.macBSSID,
8116 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008117
8118 if ( NULL != pBSSSes )
8119 {
8120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008121 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8122 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008123
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008124 /*reset the bAssociationInProgress otherwise the next
8125 *join request will be queued*/
8126 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8127 wpalMutexRelease(&pWDICtx->wptMutex);
8128 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008129 }
8130
Jeff Johnson295189b2012-06-20 16:38:30 -07008131 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008132 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008133 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008135 if ( NULL == pBSSSes )
8136 {
8137
8138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8139 "DAL has no free sessions - cannot run another join");
8140
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008141 /*reset the bAssociationInProgress otherwise the next
8142 *join request will be queued*/
8143 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008144 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008145 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 }
8147
8148 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008149 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8150 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 WDI_MAC_ADDR_LEN);
8152
8153 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008154 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008155 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008156
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 wpalMutexRelease(&pWDICtx->wptMutex);
8158
8159 /*-----------------------------------------------------------------------
8160 Get message buffer
8161 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008162 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008163 sizeof(halJoinReqMsg.joinReqParams),
8164 &pSendBuffer, &usDataOffset, &usSendSize))||
8165 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8166 {
8167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008168 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 pUserData, pwdiJoinParams, wdiJoinRspCb);
8170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008172 }
8173
8174 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008175 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008176
8177 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008178 pwdiJoinParams->wdiReqInfo.macSTASelf,
8179 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008180
Jeff Johnsone7245742012-09-05 17:12:55 -07008181 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8183
8184 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8185
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008186#ifdef WLAN_FEATURE_VOWIFI
8187 halJoinReqMsg.joinReqParams.maxTxPower =
8188 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8189#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008190 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008191 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8192#endif
8193
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8196 wdiSecondaryChannelOffset);
8197
Jeff Johnsone7245742012-09-05 17:12:55 -07008198 wpalMemoryCopy( pSendBuffer+usDataOffset,
8199 &halJoinReqMsg.joinReqParams,
8200 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008201
8202 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008203 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008204
8205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008206 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008207 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008208 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8209 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008210
8211}/*WDI_ProcessBSSSessionJoinReq*/
8212
8213/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008214 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008215 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008216
8217 @param pWDICtx: pointer to the WLAN DAL context
8218 pEventData: pointer to the event information structure
8219
Jeff Johnson295189b2012-06-20 16:38:30 -07008220 @see
8221 @return Result of the function call
8222*/
8223WDI_Status
8224WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008225(
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 WDI_ControlBlockType* pWDICtx,
8227 WDI_EventInfoType* pEventData
8228)
8229{
8230 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8231 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8232 WDI_JoinRspCb wdiJoinRspCb = NULL;
8233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8234
8235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008236 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008237 -------------------------------------------------------------------------*/
8238 if (( NULL == pEventData ) ||
8239 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8240 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8241 {
8242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008246 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008247
Jeff Johnson295189b2012-06-20 16:38:30 -07008248 /*-------------------------------------------------------------------------
8249 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008250 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 -------------------------------------------------------------------------*/
8252 wpalMutexAcquire(&pWDICtx->wptMutex);
8253
8254 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8255 {
8256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8257 "Association is currently in progress, queueing new join req");
8258
8259 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008260 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008261 pwdiJoinParams->wdiReqInfo.macBSSID);
8262
8263 wpalMutexRelease(&pWDICtx->wptMutex);
8264
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 }
8267
8268 /*Starting a new association */
8269 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8270 wpalMutexRelease(&pWDICtx->wptMutex);
8271
8272 /*Process the Join Request*/
8273 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8274 wdiJoinRspCb,pEventData->pUserData);
8275
8276}/*WDI_ProcessJoinReq*/
8277
8278
8279/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008280 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008281 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008282
8283 @param pWDICtx: pointer to the WLAN DAL context
8284 pEventData: pointer to the event information structure
8285
Jeff Johnson295189b2012-06-20 16:38:30 -07008286 @see
8287 @return Result of the function call
8288*/
8289WDI_Status
8290WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008291(
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 WDI_ControlBlockType* pWDICtx,
8293 WDI_EventInfoType* pEventData
8294)
8295{
8296 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8297 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008298 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008299 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008300 wpt_uint16 uMsgSize = 0;
8301 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008302 wpt_uint16 usDataOffset = 0;
8303 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008305
Jeff Johnsone7245742012-09-05 17:12:55 -07008306 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8308
8309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 -------------------------------------------------------------------------*/
8312 if (( NULL == pEventData ) ||
8313 ( NULL == pEventData->pEventData ) ||
8314 ( NULL == pEventData->pCBfnc ))
8315 {
8316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008317 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 }
8321
Abhishek Singh6927fa02014-06-27 17:19:55 +05308322 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008323 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8324 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8325 /*-------------------------------------------------------------------------
8326 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008327 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008328 -------------------------------------------------------------------------*/
8329 wpalMutexAcquire(&pWDICtx->wptMutex);
8330
8331 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008332 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008333 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8335 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8336 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008337
Jeff Johnsone7245742012-09-05 17:12:55 -07008338 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008339 {
8340#ifdef WLAN_FEATURE_VOWIFI_11R
8341 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008344 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008345 if ( NULL == pBSSSes )
8346 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008347
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8349 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008350
Jeff Johnson295189b2012-06-20 16:38:30 -07008351 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008352 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008354
Jeff Johnson295189b2012-06-20 16:38:30 -07008355 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008356 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8357 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008358 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008359
Jeff Johnson295189b2012-06-20 16:38:30 -07008360 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8363#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008364 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 * Request in case of IBSS*/
8366 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8367 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8368 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8369 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8370 {
8371 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008372 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 if ( NULL == pBSSSes )
8376 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008377
Jeff Johnson295189b2012-06-20 16:38:30 -07008378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8379 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008380
Jeff Johnson295189b2012-06-20 16:38:30 -07008381 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008382 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008384
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8387 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008388 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008389
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008391 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008392 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8393 }
8394 else
8395 {
8396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008397 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8398 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8399 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8400
Jeff Johnson295189b2012-06-20 16:38:30 -07008401 /* for IBSS testing */
8402 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008403 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008404 }
8405#endif
8406 }
8407
8408 /*------------------------------------------------------------------------
8409 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008411 ------------------------------------------------------------------------*/
8412 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8413 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8415 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8416 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8417 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008418
Jeff Johnsone7245742012-09-05 17:12:55 -07008419 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008420
8421 wpalMutexRelease(&pWDICtx->wptMutex);
8422
Jeff Johnsone7245742012-09-05 17:12:55 -07008423 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 }
8425
8426 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008427 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8428 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008429 sizeof(pWDICtx->wdiCachedConfigBssReq));
8430
8431 wpalMutexRelease(&pWDICtx->wptMutex);
8432
Jeff Johnsone7245742012-09-05 17:12:55 -07008433 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8434#ifdef WLAN_FEATURE_11AC
8435 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008436 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 else
8438#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008439 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008440
8441 /*-----------------------------------------------------------------------
8442 Get message buffer
8443 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008444 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008445 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8446 ( usSendSize < (usDataOffset + uMsgSize )))
8447 {
8448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008449 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 }
8454
8455 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008456#ifdef WLAN_FEATURE_11AC
8457 if (WDI_getFwWlanFeatCaps(DOT11AC))
8458 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8459 &pwdiConfigBSSParams->wdiReqInfo);
8460 else
8461#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 &pwdiConfigBSSParams->wdiReqInfo);
8464
8465 /* Need to fill in the STA Index to invalid, since at this point we have not
8466 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008467 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008468
8469 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8471
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008472#ifdef WLAN_FEATURE_11AC
8473 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8474 wpalMemoryCopy( pSendBuffer+usDataOffset,
8475 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8476 uMsgSize);
8477 }else
8478#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008479 {
8480 if ( uMsgSize <= sizeof(tConfigBssParams) )
8481 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008482 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008483 &halConfigBssReqMsg.uBssParams.configBssParams,
8484 uMsgSize);
8485 }
8486 else
8487 {
8488 return WDI_STATUS_E_FAILURE;
8489 }
8490 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008491
8492 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008493 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008494
8495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008496 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008497 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008498 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8499 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008500 WDI_CONFIG_BSS_RESP);
8501
8502}/*WDI_ProcessConfigBSSReq*/
8503
8504
8505/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008506 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008508
8509 @param pWDICtx: pointer to the WLAN DAL context
8510 pEventData: pointer to the event information structure
8511
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 @see
8513 @return Result of the function call
8514*/
8515WDI_Status
8516WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008517(
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 WDI_ControlBlockType* pWDICtx,
8519 WDI_EventInfoType* pEventData
8520)
8521{
8522 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8523 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008524 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008526 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008527 wpt_uint16 usDataOffset = 0;
8528 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008529 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008530
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8533
8534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 -------------------------------------------------------------------------*/
8537 if (( NULL == pEventData ) ||
8538 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8539 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8540 {
8541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008542 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 }
8546
8547 /*-------------------------------------------------------------------------
8548 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 -------------------------------------------------------------------------*/
8551 wpalMutexAcquire(&pWDICtx->wptMutex);
8552
8553 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008555 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008556 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8557 pwdiDelBSSParams->ucBssIdx,
8558 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008559
Jeff Johnsone7245742012-09-05 17:12:55 -07008560 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008561 {
8562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 "%s: BSS does not yet exist. ucBssIdx %d",
8564 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008565
8566 wpalMutexRelease(&pWDICtx->wptMutex);
8567
8568 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008569 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008570
8571 /*------------------------------------------------------------------------
8572 Check if this BSS is being currently processed or queued,
8573 if queued - queue the new request as well
8574 ------------------------------------------------------------------------*/
8575 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008576 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8578 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8579 __func__, pwdiDelBSSParams->ucBssIdx);
8580
8581 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8582
8583 wpalMutexRelease(&pWDICtx->wptMutex);
8584
8585 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008587
Jeff Johnson295189b2012-06-20 16:38:30 -07008588 /*-----------------------------------------------------------------------
8589 If we receive a Del BSS request for an association that is already in
8590 progress, it indicates that the assoc has failed => we no longer have
8591 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008593 -----------------------------------------------------------------------*/
8594 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8595 {
8596 /*We can switch to false here because even if a subsequent Join comes in
8597 it will only be processed when DAL transitions out of BUSY state which
8598 happens when the Del BSS request comes */
8599 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8600
8601 /*Former association is complete - prepare next pending assoc for
8602 processing */
8603 WDI_DequeueAssocRequest(pWDICtx);
8604 }
8605
8606 wpalMutexRelease(&pWDICtx->wptMutex);
8607 /*-----------------------------------------------------------------------
8608 Get message buffer
8609 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008610 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008611 sizeof(halBssReqMsg.deleteBssParams),
8612 &pSendBuffer, &usDataOffset, &usSendSize))||
8613 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8614 {
8615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008616 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8618 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 }
8621
8622 /*Fill in the message request structure*/
8623
8624 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008625 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008626
Jeff Johnsone7245742012-09-05 17:12:55 -07008627 wpalMemoryCopy( pSendBuffer+usDataOffset,
8628 &halBssReqMsg.deleteBssParams,
8629 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008630
8631 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008632 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008633
Jeff Johnsone7245742012-09-05 17:12:55 -07008634
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8640
Jeff Johnsone7245742012-09-05 17:12:55 -07008641
Jeff Johnson295189b2012-06-20 16:38:30 -07008642}/*WDI_ProcessDelBSSReq*/
8643
8644/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008647
8648 @param pWDICtx: pointer to the WLAN DAL context
8649 pEventData: pointer to the event information structure
8650
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 @see
8652 @return Result of the function call
8653*/
8654WDI_Status
8655WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008656(
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 WDI_ControlBlockType* pWDICtx,
8658 WDI_EventInfoType* pEventData
8659)
8660{
8661 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8662 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008663 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008664 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 wpt_uint16 usDataOffset = 0;
8667 wpt_uint16 usSendSize = 0;
8668 wpt_uint16 uMsgSize = 0;
8669 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008671
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8674
8675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008676 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 -------------------------------------------------------------------------*/
8678 if (( NULL == pEventData ) ||
8679 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8680 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8681 {
8682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008683 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 }
8687
8688 /*-------------------------------------------------------------------------
8689 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 -------------------------------------------------------------------------*/
8692 wpalMutexAcquire(&pWDICtx->wptMutex);
8693
8694 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008697 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8698 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8699 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008700
8701 if ( NULL == pBSSSes )
8702 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8704 "%s: Association sequence for this BSS does not yet exist - "
8705 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8706 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008707
8708 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008710 }
8711
8712 /*------------------------------------------------------------------------
8713 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008715 ------------------------------------------------------------------------*/
8716 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8717 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8719 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8720 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008721
Jeff Johnsone7245742012-09-05 17:12:55 -07008722 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008723
8724 wpalMutexRelease(&pWDICtx->wptMutex);
8725
Jeff Johnsone7245742012-09-05 17:12:55 -07008726 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008727 }
8728
8729 /*-----------------------------------------------------------------------
8730 If Post Assoc was not yet received - the current association must
8731 be in progress
8732 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8735 {
8736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8737 "Association sequence for this BSS association no longer in "
8738 "progress - not allowed");
8739
8740 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 }
8743
8744 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008746 -----------------------------------------------------------------------*/
8747 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8748 {
8749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8750 "Post Assoc not allowed before JOIN - failing request");
8751
8752 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008753 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008754 }
8755
8756 wpalMutexRelease(&pWDICtx->wptMutex);
8757
8758 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8759 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8760 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008764 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8765 ( usSendSize < (usDataOffset + uMsgSize )))
8766 {
8767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008768 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8770 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008772 }
8773
8774 /*Copy the STA parameters */
8775 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8776 &pwdiPostAssocParams->wdiSTAParams );
8777
8778 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 WDI_STATableFindStaidByAddr(pWDICtx,
8781 pwdiPostAssocParams->wdiSTAParams.macSTA,
8782 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8783 {
8784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008785 MAC_ADDRESS_STR
8786 ": This station does not exist in the WDI Station Table",
8787 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008789 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 }
8792
8793 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008794 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008795 pBSSSes->ucBSSIdx;
8796
8797 /*Copy the BSS parameters */
8798 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8799 &pwdiPostAssocParams->wdiBSSParams);
8800
8801 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008802 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008803 WDI_STATableFindStaidByAddr(pWDICtx,
8804 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 {
8807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008808 MAC_ADDRESS_STR
8809 ": This station does not exist in the WDI Station Table",
8810 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008811 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008812 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008814 }
8815
8816 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 pBSSSes->ucBSSIdx;
8819
Jeff Johnsone7245742012-09-05 17:12:55 -07008820
8821 wpalMemoryCopy( pSendBuffer+usDataOffset,
8822 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8823 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008824
8825 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8826
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8828 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8829 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008830
Jeff Johnsone7245742012-09-05 17:12:55 -07008831
Jeff Johnson295189b2012-06-20 16:38:30 -07008832 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008834
Jeff Johnsone7245742012-09-05 17:12:55 -07008835
8836 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008837 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008839
8840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008841 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008842 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008843 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008844 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8845
Jeff Johnsone7245742012-09-05 17:12:55 -07008846
Jeff Johnson295189b2012-06-20 16:38:30 -07008847}/*WDI_ProcessPostAssocReq*/
8848
8849/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008850 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008851 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008852
8853 @param pWDICtx: pointer to the WLAN DAL context
8854 pEventData: pointer to the event information structure
8855
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 @see
8857 @return Result of the function call
8858*/
8859WDI_Status
8860WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008861(
Jeff Johnson295189b2012-06-20 16:38:30 -07008862 WDI_ControlBlockType* pWDICtx,
8863 WDI_EventInfoType* pEventData
8864)
8865{
8866 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8867 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008868 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008869 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008871 wpt_uint16 usDataOffset = 0;
8872 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008874 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8875
Jeff Johnsone7245742012-09-05 17:12:55 -07008876 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8878
8879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 -------------------------------------------------------------------------*/
8882 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8883 ( NULL == pEventData->pCBfnc ))
8884 {
8885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008886 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008889 }
8890
8891 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8892 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8893 /*-------------------------------------------------------------------------
8894 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008896 -------------------------------------------------------------------------*/
8897 wpalMutexAcquire(&pWDICtx->wptMutex);
8898
8899 /*------------------------------------------------------------------------
8900 Find the BSS for which the request is made and identify WDI session
8901 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008902 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8903 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008904 &macBSSID))
8905 {
8906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008907 "This station does not exist in the WDI Station Table %d",
8908 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008909 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 }
8912
Jeff Johnsone7245742012-09-05 17:12:55 -07008913 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8914 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8917 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8918 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008919
8920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008922 }
8923
8924 /*------------------------------------------------------------------------
8925 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 ------------------------------------------------------------------------*/
8928 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8929 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8931 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8932 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008933
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008935 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008936 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008937 }
8938
8939 wpalMutexRelease(&pWDICtx->wptMutex);
8940 /*-----------------------------------------------------------------------
8941 Get message buffer
8942 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008943 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008944 sizeof(halDelStaReqMsg.delStaParams),
8945 &pSendBuffer, &usDataOffset, &usSendSize))||
8946 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8947 {
8948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008949 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008953 }
8954
Jeff Johnsone7245742012-09-05 17:12:55 -07008955 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8956 wpalMemoryCopy( pSendBuffer+usDataOffset,
8957 &halDelStaReqMsg.delStaParams,
8958 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008959
8960 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008961 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008962
8963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008964 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008967 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8968
8969}/*WDI_ProcessDelSTAReq*/
8970
8971
8972/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008974==========================================================================*/
8975/**
8976 @brief Process Set BSS Key Request function (called when Main FSM
8977 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008978
8979 @param pWDICtx: pointer to the WLAN DAL context
8980 pEventData: pointer to the event information structure
8981
Jeff Johnson295189b2012-06-20 16:38:30 -07008982 @see
8983 @return Result of the function call
8984*/
8985WDI_Status
8986WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008987(
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 WDI_ControlBlockType* pWDICtx,
8989 WDI_EventInfoType* pEventData
8990)
8991{
8992 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8993 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008996 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008997 wpt_uint16 usDataOffset = 0;
8998 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008999 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009000 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9001 wpt_uint8 keyIndex = 0;
9002
9003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9004
9005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009006 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 -------------------------------------------------------------------------*/
9008 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9009 ( NULL == pEventData->pCBfnc ))
9010 {
9011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009012 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009015 }
9016
9017 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9018 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9019 /*-------------------------------------------------------------------------
9020 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 -------------------------------------------------------------------------*/
9023 wpalMutexAcquire(&pWDICtx->wptMutex);
9024
9025 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9029 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9030 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009031
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 {
9034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9036 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009037
9038 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 }
9041
9042 /*------------------------------------------------------------------------
9043 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009044 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009045 ------------------------------------------------------------------------*/
9046 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9047 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9049 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9050 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009051
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009054 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009055 }
9056
9057
9058 wpalMutexRelease(&pWDICtx->wptMutex);
9059 /*-----------------------------------------------------------------------
9060 Get message buffer
9061 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009063 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9064 &pSendBuffer, &usDataOffset, &usSendSize))||
9065 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9066 {
9067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009068 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 }
9073
9074 /*-----------------------------------------------------------------------
9075 Copy the Key parameters into the HAL message
9076 -----------------------------------------------------------------------*/
9077
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009079
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9082
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9085
9086 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9087 keyIndex++)
9088 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009090 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9091 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9092 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9093 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9094 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
9095 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009096 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009097 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009100 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009101 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
9102 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009103 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009104 WDI_MAX_KEY_LENGTH);
9105 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009106
9107 wpalMemoryCopy( pSendBuffer+usDataOffset,
9108 &halSetBssKeyReqMsg.setBssKeyParams,
9109 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009110
9111 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009113
9114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9118 wdiSetBSSKeyRspCb, pEventData->pUserData,
9119 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009120
9121}/*WDI_ProcessSetBssKeyReq*/
9122
9123/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009126
9127 @param pWDICtx: pointer to the WLAN DAL context
9128 pEventData: pointer to the event information structure
9129
Jeff Johnson295189b2012-06-20 16:38:30 -07009130 @see
9131 @return Result of the function call
9132*/
9133WDI_Status
9134WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009135(
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 WDI_ControlBlockType* pWDICtx,
9137 WDI_EventInfoType* pEventData
9138)
9139{
9140 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9141 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009144 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 wpt_uint16 usDataOffset = 0;
9146 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009147 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9150
9151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 -------------------------------------------------------------------------*/
9154 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9155 ( NULL == pEventData->pCBfnc ))
9156 {
9157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009158 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 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 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9164 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9165 /*-------------------------------------------------------------------------
9166 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 -------------------------------------------------------------------------*/
9169 wpalMutexAcquire(&pWDICtx->wptMutex);
9170
9171 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009172 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009173 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9175 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9176 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009177
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 {
9180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009181 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9182 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009183
9184 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 }
9187
9188 /*------------------------------------------------------------------------
9189 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 ------------------------------------------------------------------------*/
9192 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9193 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9195 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9196 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009197
Jeff Johnsone7245742012-09-05 17:12:55 -07009198 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 }
9202
9203
9204 wpalMutexRelease(&pWDICtx->wptMutex);
9205
9206 /*-----------------------------------------------------------------------
9207 Get message buffer
9208 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9211 &pSendBuffer, &usDataOffset, &usSendSize))||
9212 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9213 {
9214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009215 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009219 }
9220 /*-----------------------------------------------------------------------
9221 Copy the Key parameters into the HAL message
9222 -----------------------------------------------------------------------*/
9223 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9224
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9227
9228 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9229
Jeff Johnsone7245742012-09-05 17:12:55 -07009230 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009231 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9232
Jeff Johnsone7245742012-09-05 17:12:55 -07009233 wpalMemoryCopy( pSendBuffer+usDataOffset,
9234 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9235 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009236
9237 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009239
9240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009242 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009243 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009246}/*WDI_ProcessRemoveBssKeyReq*/
9247
9248/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009251
9252 @param pWDICtx: pointer to the WLAN DAL context
9253 pEventData: pointer to the event information structure
9254
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 @see
9256 @return Result of the function call
9257*/
9258WDI_Status
9259WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009260(
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 WDI_ControlBlockType* pWDICtx,
9262 WDI_EventInfoType* pEventData
9263)
9264{
9265 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9266 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9267 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009268 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 wpt_uint16 usDataOffset = 0;
9270 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009274 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9275 wpt_uint8 keyIndex = 0;
9276
9277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9278
9279 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009281 -------------------------------------------------------------------------*/
9282 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9283 ( NULL == pEventData->pCBfnc ))
9284 {
9285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009286 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009289 }
9290
9291 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9292 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9293 /*-------------------------------------------------------------------------
9294 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009295 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009296 -------------------------------------------------------------------------*/
9297 wpalMutexAcquire(&pWDICtx->wptMutex);
9298
9299 /*------------------------------------------------------------------------
9300 Find the BSS for which the request is made and identify WDI session
9301 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009302 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9303 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 &macBSSID))
9305 {
9306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009307 "This station does not exist in the WDI Station Table %d",
9308 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 }
9312
Jeff Johnsone7245742012-09-05 17:12:55 -07009313 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9314 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9317 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9318 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009319
9320 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009321 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009323
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 /*------------------------------------------------------------------------
9325 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009327 ------------------------------------------------------------------------*/
9328 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9329 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9331 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9332 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009333
Jeff Johnsone7245742012-09-05 17:12:55 -07009334 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009337 }
9338
9339
9340 wpalMutexRelease(&pWDICtx->wptMutex);
9341 /*-----------------------------------------------------------------------
9342 Get message buffer
9343 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009344 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009345 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9346 &pSendBuffer, &usDataOffset, &usSendSize))||
9347 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9348 {
9349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009350 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9352 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009354 }
9355 /*-----------------------------------------------------------------------
9356 Copy the STA Key parameters into the HAL message
9357 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9360
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9363
9364 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9365
9366 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9367
9368 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9369
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9371 keyIndex++)
9372 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009373 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009374 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9375 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9376 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9377 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9378 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9379 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009380 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009381 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009383 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9386 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009388 WDI_MAX_KEY_LENGTH);
9389 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009390
Jeff Johnsone7245742012-09-05 17:12:55 -07009391 wpalMemoryCopy( pSendBuffer+usDataOffset,
9392 &halSetStaKeyReqMsg.setStaKeyParams,
9393 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009394
9395 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009397
9398 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009399 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009400 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9402 wdiSetSTAKeyRspCb, pEventData->pUserData,
9403 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009404
9405}/*WDI_ProcessSetSTAKeyReq*/
9406
9407/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009408 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009409 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009410
9411 @param pWDICtx: pointer to the WLAN DAL context
9412 pEventData: pointer to the event information structure
9413
Jeff Johnson295189b2012-06-20 16:38:30 -07009414 @see
9415 @return Result of the function call
9416*/
9417WDI_Status
9418WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009419(
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 WDI_ControlBlockType* pWDICtx,
9421 WDI_EventInfoType* pEventData
9422)
9423{
9424 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9425 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9426 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 wpt_uint16 usDataOffset = 0;
9429 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 wpt_macAddr macBSSID;
9432 wpt_uint8 ucCurrentBSSSesIdx;
9433 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9435
9436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009437 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009438 -------------------------------------------------------------------------*/
9439 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9440 ( NULL == pEventData->pCBfnc ))
9441 {
9442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 }
9447
9448 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9449 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9450 /*-------------------------------------------------------------------------
9451 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009453 -------------------------------------------------------------------------*/
9454 wpalMutexAcquire(&pWDICtx->wptMutex);
9455
9456 /*------------------------------------------------------------------------
9457 Find the BSS for which the request is made and identify WDI session
9458 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009459 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9460 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 &macBSSID))
9462 {
9463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009464 "This station does not exist in the WDI Station Table %d",
9465 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 }
9469
Jeff Johnsone7245742012-09-05 17:12:55 -07009470 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9471 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9474 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9475 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009476
9477 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009480
Jeff Johnson295189b2012-06-20 16:38:30 -07009481 /*------------------------------------------------------------------------
9482 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009484 ------------------------------------------------------------------------*/
9485 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9486 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9488 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9489 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009490
Jeff Johnsone7245742012-09-05 17:12:55 -07009491 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009492 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 }
9495
9496
9497
9498 wpalMutexRelease(&pWDICtx->wptMutex);
9499 /*-----------------------------------------------------------------------
9500 Get message buffer
9501 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009502 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009503 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9504 &pSendBuffer, &usDataOffset, &usSendSize))||
9505 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9506 {
9507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009508 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009509 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9510 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009511 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009512 }
9513
9514 /*-----------------------------------------------------------------------
9515 Copy the Key parameters into the HAL message
9516 -----------------------------------------------------------------------*/
9517
Jeff Johnsone7245742012-09-05 17:12:55 -07009518 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009519 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9520
Jeff Johnsone7245742012-09-05 17:12:55 -07009521 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9523
Jeff Johnsone7245742012-09-05 17:12:55 -07009524 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009525 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9526
Jeff Johnsone7245742012-09-05 17:12:55 -07009527 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009528 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9529
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 wpalMemoryCopy( pSendBuffer+usDataOffset,
9531 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9532 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009533
9534 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009536
9537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009538 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009539 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009542 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009543
9544}/*WDI_ProcessRemoveSTAKeyReq*/
9545
9546/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009548 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009549
9550 @param pWDICtx: pointer to the WLAN DAL context
9551 pEventData: pointer to the event information structure
9552
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 @see
9554 @return Result of the function call
9555*/
9556WDI_Status
9557WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009558(
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 WDI_ControlBlockType* pWDICtx,
9560 WDI_EventInfoType* pEventData
9561)
9562{
9563 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9564 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9565 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 wpt_uint16 usDataOffset = 0;
9568 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009569 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9573 wpt_uint8 keyIndex = 0;
9574
9575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9576
9577 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 -------------------------------------------------------------------------*/
9580 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9581 ( NULL == pEventData->pCBfnc ))
9582 {
9583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 }
9588
9589 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9590 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9591 /*-------------------------------------------------------------------------
9592 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009593 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 -------------------------------------------------------------------------*/
9595 wpalMutexAcquire(&pWDICtx->wptMutex);
9596
9597 /*------------------------------------------------------------------------
9598 Find the BSS for which the request is made and identify WDI session
9599 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9601 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009602 &macBSSID))
9603 {
9604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009605 "This station does not exist in the WDI Station Table %d",
9606 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009609 }
9610
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9612 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 {
9614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009615 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009616 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009617
9618 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009621
Jeff Johnson295189b2012-06-20 16:38:30 -07009622 /*------------------------------------------------------------------------
9623 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 ------------------------------------------------------------------------*/
9626 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9627 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9629 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9630 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009631
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009634 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 }
9636
9637
9638 wpalMutexRelease(&pWDICtx->wptMutex);
9639 /*-----------------------------------------------------------------------
9640 Get message buffer
9641 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009642 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009643 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9644 &pSendBuffer, &usDataOffset, &usSendSize))||
9645 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9646 {
9647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009648 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 }
9653 /*-----------------------------------------------------------------------
9654 Copy the STA Key parameters into the HAL message
9655 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009656 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009657 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9658
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9661
9662 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9663
9664 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9665
9666 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9667
Jeff Johnson295189b2012-06-20 16:38:30 -07009668 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9669 keyIndex++)
9670 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9673 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9674 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9675 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9676 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9677 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009678 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9684 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 WDI_MAX_KEY_LENGTH);
9687 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009688
Jeff Johnsone7245742012-09-05 17:12:55 -07009689 wpalMemoryCopy( pSendBuffer+usDataOffset,
9690 &halSetStaKeyReqMsg.setStaKeyParams,
9691 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009692
9693 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009695
9696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009699 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9700 wdiSetSTAKeyRspCb, pEventData->pUserData,
9701 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009702
9703}/*WDI_ProcessSetSTABcastKeyReq*/
9704
9705/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009707 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009708
9709 @param pWDICtx: pointer to the WLAN DAL context
9710 pEventData: pointer to the event information structure
9711
Jeff Johnson295189b2012-06-20 16:38:30 -07009712 @see
9713 @return Result of the function call
9714*/
9715WDI_Status
9716WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009717(
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 WDI_ControlBlockType* pWDICtx,
9719 WDI_EventInfoType* pEventData
9720)
9721{
9722 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9723 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9724 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 wpt_uint16 usDataOffset = 0;
9727 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009728 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009729 wpt_macAddr macBSSID;
9730 wpt_uint8 ucCurrentBSSSesIdx;
9731 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9733
9734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009736 -------------------------------------------------------------------------*/
9737 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9738 ( NULL == pEventData->pCBfnc ))
9739 {
9740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 }
9745
9746 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9747 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9748 /*-------------------------------------------------------------------------
9749 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009750 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009751 -------------------------------------------------------------------------*/
9752 wpalMutexAcquire(&pWDICtx->wptMutex);
9753
9754 /*------------------------------------------------------------------------
9755 Find the BSS for which the request is made and identify WDI session
9756 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9758 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009759 &macBSSID))
9760 {
9761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009762 "This station does not exist in the WDI Station Table %d",
9763 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009764 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 }
9767
Jeff Johnsone7245742012-09-05 17:12:55 -07009768 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9769 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009770 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9772 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9773 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009774
9775 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009776 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009777 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009778
Jeff Johnson295189b2012-06-20 16:38:30 -07009779 /*------------------------------------------------------------------------
9780 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009781 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 ------------------------------------------------------------------------*/
9783 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9784 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9786 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9787 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009788
Jeff Johnsone7245742012-09-05 17:12:55 -07009789 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009791 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009792 }
9793
9794
9795
9796 wpalMutexRelease(&pWDICtx->wptMutex);
9797 /*-----------------------------------------------------------------------
9798 Get message buffer
9799 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9802 &pSendBuffer, &usDataOffset, &usSendSize))||
9803 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9804 {
9805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009806 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009810 }
9811
9812 /*-----------------------------------------------------------------------
9813 Copy the Key parameters into the HAL message
9814 -----------------------------------------------------------------------*/
9815
Jeff Johnsone7245742012-09-05 17:12:55 -07009816 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009817 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9818
Jeff Johnsone7245742012-09-05 17:12:55 -07009819 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009820 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9821
Jeff Johnsone7245742012-09-05 17:12:55 -07009822 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009823 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9824
Jeff Johnsone7245742012-09-05 17:12:55 -07009825 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009826 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9827
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 wpalMemoryCopy( pSendBuffer+usDataOffset,
9829 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9830 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009831
9832 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009834
9835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009837 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009838 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009840 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009841
9842}/*WDI_ProcessRemoveSTABcastKeyReq*/
9843
9844/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009845 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009846==========================================================================*/
9847/**
9848 @brief Process Add TSpec Request function (called when Main FSM
9849 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009850
9851 @param pWDICtx: pointer to the WLAN DAL context
9852 pEventData: pointer to the event information structure
9853
Jeff Johnson295189b2012-06-20 16:38:30 -07009854 @see
9855 @return Result of the function call
9856*/
9857WDI_Status
9858WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009859(
Jeff Johnson295189b2012-06-20 16:38:30 -07009860 WDI_ControlBlockType* pWDICtx,
9861 WDI_EventInfoType* pEventData
9862)
9863{
9864 WDI_AddTSReqParamsType* pwdiAddTSParams;
9865 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009866 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009867 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009868 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009869 wpt_uint16 usDataOffset = 0;
9870 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009871 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009872 wpt_macAddr macBSSID;
9873 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009874
Jeff Johnson295189b2012-06-20 16:38:30 -07009875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9876
9877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 -------------------------------------------------------------------------*/
9880 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9881 ( NULL == pEventData->pCBfnc ))
9882 {
9883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009884 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009887 }
9888
9889 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9890 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9891 /*-------------------------------------------------------------------------
9892 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009893 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009894 -------------------------------------------------------------------------*/
9895 wpalMutexAcquire(&pWDICtx->wptMutex);
9896
9897 /*------------------------------------------------------------------------
9898 Find the BSS for which the request is made and identify WDI session
9899 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009900 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9901 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009902 &macBSSID))
9903 {
9904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009905 "This station does not exist in the WDI Station Table %d",
9906 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009907 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 }
9910
Jeff Johnsone7245742012-09-05 17:12:55 -07009911 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9912 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009913 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9915 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9916 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009917
9918 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009919 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009920 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009921
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 /*------------------------------------------------------------------------
9923 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009925 ------------------------------------------------------------------------*/
9926 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9927 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9929 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9930 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009931
Jeff Johnsone7245742012-09-05 17:12:55 -07009932 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 }
9936
9937 wpalMutexRelease(&pWDICtx->wptMutex);
9938 /*-----------------------------------------------------------------------
9939 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009940 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009941 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9943 sizeof(halAddTsParams),
9944 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009945 &usSendSize))||
9946 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9947 {
9948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009949 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009950 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009953 }
9954
9955 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9956 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9957
9958 //TSPEC IE
9959 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9960 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009965 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009967 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009968 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009969 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009970 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009975 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009976 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009978 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009983 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009984 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009985 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009987 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009988 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9991
9992 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009993 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009994 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009995 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009996 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009997 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009998 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010001 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010003 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010004 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10007
10008 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010009 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10013
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 wpalMemoryCopy( pSendBuffer+usDataOffset,
10015 &halAddTsParams,
10016 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010017
10018 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010019 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010020
10021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010024 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010025 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010027}/*WDI_ProcessAddTSpecReq*/
10028
10029
10030/**
10031 @brief Process Del TSpec Request function (called when Main FSM
10032 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010033
10034 @param pWDICtx: pointer to the WLAN DAL context
10035 pEventData: pointer to the event information structure
10036
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 @see
10038 @return Result of the function call
10039*/
10040WDI_Status
10041WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010042(
Jeff Johnson295189b2012-06-20 16:38:30 -070010043 WDI_ControlBlockType* pWDICtx,
10044 WDI_EventInfoType* pEventData
10045)
10046{
10047 WDI_DelTSReqParamsType* pwdiDelTSParams;
10048 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010049 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010050 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010051 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 wpt_uint16 usDataOffset = 0;
10053 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010054 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10056
10057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010058 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010059 -------------------------------------------------------------------------*/
10060 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10061 ( NULL == pEventData->pCBfnc ))
10062 {
10063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010064 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010067 }
10068
10069 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10070 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10071
10072 /*-------------------------------------------------------------------------
10073 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 -------------------------------------------------------------------------*/
10076 wpalMutexAcquire(&pWDICtx->wptMutex);
10077
10078 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010079 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010080 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010081 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10082 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10083 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010084
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010086 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10088 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10089 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10090
Jeff Johnson295189b2012-06-20 16:38:30 -070010091 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010092 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010093 }
10094
10095 /*------------------------------------------------------------------------
10096 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010097 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010098 ------------------------------------------------------------------------*/
10099 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10100 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10102 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10103 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010104
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010107 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010108 }
10109
10110
10111 wpalMutexRelease(&pWDICtx->wptMutex);
10112 /*-----------------------------------------------------------------------
10113 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010114 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010115 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10118 &pSendBuffer, &usDataOffset, &usSendSize))||
10119 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10120 {
10121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010122 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010126 }
10127
Jeff Johnsone7245742012-09-05 17:12:55 -070010128 wpalMemoryCopy( pSendBuffer+usDataOffset,
10129 &pwdiDelTSParams->wdiDelTSInfo,
10130 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010131
10132 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010133 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010134
10135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010136 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010137 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010138 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10139 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010140}/*WDI_ProcessDelTSpecReq*/
10141
10142/**
10143 @brief Process Update EDCA Params Request function (called when
10144 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010145
10146 @param pWDICtx: pointer to the WLAN DAL context
10147 pEventData: pointer to the event information structure
10148
Jeff Johnson295189b2012-06-20 16:38:30 -070010149 @see
10150 @return Result of the function call
10151*/
10152WDI_Status
10153WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010154(
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 WDI_ControlBlockType* pWDICtx,
10156 WDI_EventInfoType* pEventData
10157)
10158{
10159 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10160 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 wpt_uint16 usDataOffset = 0;
10165 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10168
10169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010171 -------------------------------------------------------------------------*/
10172 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10173 ( NULL == pEventData->pCBfnc ))
10174 {
10175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010179 }
10180
10181 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10182 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10183 /*-------------------------------------------------------------------------
10184 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010185 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010186 -------------------------------------------------------------------------*/
10187 wpalMutexAcquire(&pWDICtx->wptMutex);
10188
10189 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010190 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010191 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10193 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10194 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010195
Jeff Johnsone7245742012-09-05 17:12:55 -070010196 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010197 {
10198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10200 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010201
10202 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010203 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010204 }
10205
10206 /*------------------------------------------------------------------------
10207 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010208 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010209 ------------------------------------------------------------------------*/
10210 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10211 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10213 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10214 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010215
Jeff Johnsone7245742012-09-05 17:12:55 -070010216 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010218 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010219 }
10220
10221
10222 wpalMutexRelease(&pWDICtx->wptMutex);
10223 /*-----------------------------------------------------------------------
10224 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010225 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010226 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010227 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010228 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10229 &pSendBuffer, &usDataOffset, &usSendSize))||
10230 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10231 {
10232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010233 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010234 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010237 }
10238
Jeff Johnsone7245742012-09-05 17:12:55 -070010239 wpalMemoryCopy( pSendBuffer+usDataOffset,
10240 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10241 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010242
10243 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010244 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010245
10246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010247 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010248 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010249 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10250 wdiUpdateEDCARspCb, pEventData->pUserData,
10251 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010252}/*WDI_ProcessUpdateEDCAParamsReq*/
10253
10254/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010255 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010256 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010257
10258 @param pWDICtx: pointer to the WLAN DAL context
10259 pEventData: pointer to the event information structure
10260
Jeff Johnson295189b2012-06-20 16:38:30 -070010261 @see
10262 @return Result of the function call
10263*/
10264WDI_Status
10265WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010266(
Jeff Johnson295189b2012-06-20 16:38:30 -070010267 WDI_ControlBlockType* pWDICtx,
10268 WDI_EventInfoType* pEventData
10269)
10270{
10271 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10272 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010273 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010274 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010275 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010276 wpt_uint16 usDataOffset = 0;
10277 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010279 wpt_macAddr macBSSID;
10280
10281 tAddBASessionReqMsg halAddBASessionReq;
10282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10283
10284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 -------------------------------------------------------------------------*/
10287 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10288 ( NULL == pEventData->pCBfnc ))
10289 {
10290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010294 }
10295
Jeff Johnsone7245742012-09-05 17:12:55 -070010296 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010298 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010299 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10300 /*-------------------------------------------------------------------------
10301 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010302 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010303 -------------------------------------------------------------------------*/
10304 wpalMutexAcquire(&pWDICtx->wptMutex);
10305
10306 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010308 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010309 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10310 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010311 &macBSSID))
10312 {
10313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010314 "This station does not exist in the WDI Station Table %d",
10315 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010316 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010318 }
10319
10320
Jeff Johnsone7245742012-09-05 17:12:55 -070010321 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010322
Jeff Johnsone7245742012-09-05 17:12:55 -070010323 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10326 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10327 __func__, MAC_ADDR_ARRAY(macBSSID));
10328
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010330 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010331 }
10332
10333 /*------------------------------------------------------------------------
10334 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010335 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010336 ------------------------------------------------------------------------*/
10337 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10338 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10340 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10341 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010342
Jeff Johnsone7245742012-09-05 17:12:55 -070010343 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010344 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010345 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010346 }
10347
10348
10349 wpalMutexRelease(&pWDICtx->wptMutex);
10350 /*-----------------------------------------------------------------------
10351 Get message buffer
10352 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10354 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010355 sizeof(halAddBASessionReq.addBASessionParams),
10356 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10359 {
10360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010361 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010362 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010365 }
10366
10367 halAddBASessionReq.addBASessionParams.staIdx =
10368 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10369 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10370 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10371 WDI_MAC_ADDR_LEN);
10372 halAddBASessionReq.addBASessionParams.baTID =
10373 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10374 halAddBASessionReq.addBASessionParams.baPolicy =
10375 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10376 halAddBASessionReq.addBASessionParams.baBufferSize =
10377 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10378 halAddBASessionReq.addBASessionParams.baTimeout =
10379 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10380 halAddBASessionReq.addBASessionParams.baSSN =
10381 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10382 halAddBASessionReq.addBASessionParams.baDirection =
10383 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10384
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 wpalMemoryCopy( pSendBuffer+usDataOffset,
10386 &halAddBASessionReq.addBASessionParams,
10387 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010388
10389 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010390 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010391
10392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10396 wdiAddBASessionRspCb, pEventData->pUserData,
10397 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010398}/*WDI_ProcessAddBASessionReq*/
10399
10400/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010401 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010402 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010403
10404 @param pWDICtx: pointer to the WLAN DAL context
10405 pEventData: pointer to the event information structure
10406
Jeff Johnson295189b2012-06-20 16:38:30 -070010407 @see
10408 @return Result of the function call
10409*/
10410WDI_Status
10411WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010412(
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 WDI_ControlBlockType* pWDICtx,
10414 WDI_EventInfoType* pEventData
10415)
10416{
10417 WDI_DelBAReqParamsType* pwdiDelBAParams;
10418 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 wpt_uint16 usDataOffset = 0;
10423 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010424 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010425 wpt_macAddr macBSSID;
10426 tDelBAParams halDelBAparam;
10427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10428
10429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010430 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010431 -------------------------------------------------------------------------*/
10432 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10433 ( NULL == pEventData->pCBfnc ))
10434 {
10435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010436 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010439 }
10440
10441 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10442 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10443 /*-------------------------------------------------------------------------
10444 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010445 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010446 -------------------------------------------------------------------------*/
10447 wpalMutexAcquire(&pWDICtx->wptMutex);
10448
10449 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010452 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10453 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 &macBSSID))
10455 {
10456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010457 "This station does not exist in the WDI Station Table %d",
10458 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 }
10462
Jeff Johnsone7245742012-09-05 17:12:55 -070010463 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010464
Jeff Johnsone7245742012-09-05 17:12:55 -070010465 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010466 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10468 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10469 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010470
10471 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010472 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010473 }
10474
10475 /*------------------------------------------------------------------------
10476 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010477 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010478 ------------------------------------------------------------------------*/
10479 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10480 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10482 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10483 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010484
Jeff Johnsone7245742012-09-05 17:12:55 -070010485 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010486 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010487 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010488 }
10489
10490 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010492 sizeof(halDelBAparam),
10493 &pSendBuffer, &usDataOffset, &usSendSize))||
10494 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10495 {
10496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010497 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010498 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 }
10502
10503 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10504 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10505 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10506
Jeff Johnsone7245742012-09-05 17:12:55 -070010507 wpalMemoryCopy( pSendBuffer+usDataOffset,
10508 &halDelBAparam,
10509 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010510
10511 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010513
10514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010515 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010516 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010517 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10518 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010519}/*WDI_ProcessDelBAReq*/
10520
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010521#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010522
10523WDI_Status
10524WDI_ProcessTSMStatsReq
10525(
10526 WDI_ControlBlockType* pWDICtx,
10527 WDI_EventInfoType* pEventData
10528)
10529{
10530 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10531 WDI_TsmRspCb wdiTSMRspCb;
10532 wpt_uint8 ucCurrentBSSSesIdx = 0;
10533 WDI_BSSSessionType* pBSSSes = NULL;
10534 wpt_uint8* pSendBuffer = NULL;
10535 wpt_uint16 usDataOffset = 0;
10536 wpt_uint16 usSendSize = 0;
10537 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10538 tTsmStatsParams halTsmStatsReqParams = {0};
10539
10540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10541
10542 /*-------------------------------------------------------------------------
10543 Sanity check
10544 -------------------------------------------------------------------------*/
10545 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10546 ( NULL == pEventData->pCBfnc ))
10547 {
10548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010549 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 WDI_ASSERT(0);
10551 return WDI_STATUS_E_FAILURE;
10552 }
10553
10554 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10555 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10556 /*-------------------------------------------------------------------------
10557 Check to see if we are in the middle of an association, if so queue, if
10558 not it means it is free to process request
10559 -------------------------------------------------------------------------*/
10560 wpalMutexAcquire(&pWDICtx->wptMutex);
10561
10562 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10563 if ( NULL == pBSSSes )
10564 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10566 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10567 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010568
10569 wpalMutexRelease(&pWDICtx->wptMutex);
10570 return WDI_STATUS_E_NOT_ALLOWED;
10571 }
10572
10573 /*------------------------------------------------------------------------
10574 Check if this BSS is being currently processed or queued,
10575 if queued - queue the new request as well
10576 ------------------------------------------------------------------------*/
10577 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10578 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010580 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010581 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010582
10583 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10584 wpalMutexRelease(&pWDICtx->wptMutex);
10585 return wdiStatus;
10586 }
10587
10588 wpalMutexRelease(&pWDICtx->wptMutex);
10589 /*-----------------------------------------------------------------------
10590 Get message buffer
10591 ! TO DO : proper conversion into the HAL Message Request Format
10592 -----------------------------------------------------------------------*/
10593 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10594 sizeof(halTsmStatsReqParams),
10595 &pSendBuffer, &usDataOffset, &usSendSize))||
10596 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10597 {
10598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010599 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010600 pEventData, pwdiTSMParams, wdiTSMRspCb);
10601 WDI_ASSERT(0);
10602 return WDI_STATUS_E_FAILURE;
10603 }
10604
10605 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10606 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10607 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10608 WDI_MAC_ADDR_LEN);
10609 wpalMemoryCopy( pSendBuffer+usDataOffset,
10610 &halTsmStatsReqParams,
10611 sizeof(halTsmStatsReqParams));
10612
10613 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10614 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10615
10616 /*-------------------------------------------------------------------------
10617 Send TSM Stats Request to HAL
10618 -------------------------------------------------------------------------*/
10619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10620 wdiTSMRspCb, pEventData->pUserData,
10621 WDI_TSM_STATS_RESP);
10622}/*WDI_ProcessTSMStatsReq*/
10623
10624#endif
10625
10626
10627/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010628 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010630
10631 @param pWDICtx: pointer to the WLAN DAL context
10632 pEventData: pointer to the event information structure
10633
Jeff Johnson295189b2012-06-20 16:38:30 -070010634 @see
10635 @return Result of the function call
10636*/
10637WDI_Status
10638WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010639(
Jeff Johnson295189b2012-06-20 16:38:30 -070010640 WDI_ControlBlockType* pWDICtx,
10641 WDI_EventInfoType* pEventData
10642)
10643{
10644 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10645 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010646 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010647 wpt_uint16 usDataOffset = 0;
10648 wpt_uint16 usSendSize = 0;
10649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10650
10651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010652 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010653 -------------------------------------------------------------------------*/
10654 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10655 ( NULL == pEventData->pCBfnc ))
10656 {
10657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010661 }
10662
10663 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10664 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10665 /*-----------------------------------------------------------------------
10666 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010668 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010670 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10671 &pSendBuffer, &usDataOffset, &usSendSize))||
10672 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10673 {
10674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010675 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010679 }
10680
Jeff Johnsone7245742012-09-05 17:12:55 -070010681 wpalMemoryCopy( pSendBuffer+usDataOffset,
10682 &pwdiFlushAcParams->wdiFlushAcInfo,
10683 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010684
10685 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010686 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010687
10688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010689 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010690 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10692 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010693}/*WDI_ProcessFlushAcReq*/
10694
10695/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010696 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010697 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010698
10699 @param pWDICtx: pointer to the WLAN DAL context
10700 pEventData: pointer to the event information structure
10701
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 @see
10703 @return Result of the function call
10704*/
10705WDI_Status
10706WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010707(
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 WDI_ControlBlockType* pWDICtx,
10709 WDI_EventInfoType* pEventData
10710)
10711{
10712 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10713 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010714 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010715 wpt_uint16 usDataOffset = 0;
10716 wpt_uint16 usSendSize = 0;
10717
10718 tBtAmpEventMsg haltBtAmpEventMsg;
10719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10720
10721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010723 -------------------------------------------------------------------------*/
10724 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10725 ( NULL == pEventData->pCBfnc ))
10726 {
10727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010731 }
10732
10733 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10734 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10735 /*-----------------------------------------------------------------------
10736 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010740 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10741 &pSendBuffer, &usDataOffset, &usSendSize))||
10742 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10743 {
10744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010745 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010749 }
10750
Jeff Johnsone7245742012-09-05 17:12:55 -070010751 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010752 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 wpalMemoryCopy( pSendBuffer+usDataOffset,
10754 &haltBtAmpEventMsg.btAmpEventParams,
10755 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010756
10757 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010759
10760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010761 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010762 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10764 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010765}/*WDI_ProcessBtAmpEventReq*/
10766
10767/**
10768 @brief Process Add STA self Request function (called when Main FSM
10769 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010770
10771 @param pWDICtx: pointer to the WLAN DAL context
10772 pEventData: pointer to the event information structure
10773
Jeff Johnson295189b2012-06-20 16:38:30 -070010774 @see
10775 @return Result of the function call
10776*/
10777WDI_Status
10778WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010779(
Jeff Johnson295189b2012-06-20 16:38:30 -070010780 WDI_ControlBlockType* pWDICtx,
10781 WDI_EventInfoType* pEventData
10782)
10783{
10784 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10785 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010786 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010787 wpt_uint16 usDataOffset = 0;
10788 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010789 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10791
10792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010793 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010794 -------------------------------------------------------------------------*/
10795 if (( NULL == pEventData ) ||
10796 ( NULL == pEventData->pEventData) ||
10797 ( NULL == pEventData->pCBfnc))
10798 {
10799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010800 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 }
10804
Jeff Johnsone7245742012-09-05 17:12:55 -070010805 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010806 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010807 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010808 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10809 /*-----------------------------------------------------------------------
10810 Get message buffer
10811 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010812 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10813 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010814 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010815 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010816 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010817 {
10818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010819 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010823 }
10824
10825 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010826 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010827 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10828
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010830 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10831 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10832 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10833 {
10834 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10835 }
10836 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10837 VOS_P2P_CLIENT_MODE) ||
10838 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10839 VOS_P2P_DEVICE))
10840 {
10841 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10842 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010843 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010844 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010845
10846 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010848
10849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010850 Send Update Probe Resp Template 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 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10854 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010855}/*WDI_ProcessAddSTASelfReq*/
10856
10857
10858
10859/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010861 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010862
10863 @param pWDICtx: pointer to the WLAN DAL context
10864 pEventData: pointer to the event information structure
10865
Jeff Johnson295189b2012-06-20 16:38:30 -070010866 @see
10867 @return Result of the function call
10868*/
10869WDI_Status
10870WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010871(
Jeff Johnson295189b2012-06-20 16:38:30 -070010872 WDI_ControlBlockType* pWDICtx,
10873 WDI_EventInfoType* pEventData
10874)
10875{
10876 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10877 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010878 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010879 wpt_uint16 usDataOffset = 0;
10880 wpt_uint16 usSendSize = 0;
10881 tDelStaSelfParams halSetDelSelfSTAParams;
10882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10883
10884 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010885 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010886 -------------------------------------------------------------------------*/
10887 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10888 ( NULL == pEventData->pCBfnc ))
10889 {
10890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010891 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010894 }
10895
Jeff Johnsone7245742012-09-05 17:12:55 -070010896 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010897 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10898 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10899
10900 /*-----------------------------------------------------------------------
10901 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010902 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010903 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10906 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10909 {
10910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010911 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010915 }
10916
Jeff Johnsone7245742012-09-05 17:12:55 -070010917 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010918 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10919
Jeff Johnsone7245742012-09-05 17:12:55 -070010920 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10921 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010922
10923 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010924 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010925
10926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10930 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010931 WDI_DEL_STA_SELF_RESP);
10932
10933}
10934
Jeff Johnsone7245742012-09-05 17:12:55 -070010935#ifdef FEATURE_OEM_DATA_SUPPORT
10936/**
10937 @brief Process Start Oem Data Request function (called when Main
10938 FSM allows it)
10939
10940 @param pWDICtx: pointer to the WLAN DAL context
10941 pEventData: pointer to the event information structure
10942
10943 @see
10944 @return Result of the function call
10945*/
10946WDI_Status
10947WDI_ProcessStartOemDataReq
10948(
10949 WDI_ControlBlockType* pWDICtx,
10950 WDI_EventInfoType* pEventData
10951)
10952{
10953 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10954 WDI_oemDataRspCb wdiOemDataRspCb;
10955 wpt_uint8* pSendBuffer = NULL;
10956 wpt_uint16 usDataOffset = 0;
10957 wpt_uint16 usSendSize = 0;
10958 wpt_uint16 reqLen;
10959 tStartOemDataReqParams* halStartOemDataReqParams;
10960
10961 /*-------------------------------------------------------------------------
10962 Sanity check
10963 -------------------------------------------------------------------------*/
10964 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10965 ( NULL == pEventData->pCBfnc ))
10966 {
10967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010968 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010969 WDI_ASSERT(0);
10970 return WDI_STATUS_E_FAILURE;
10971 }
10972
10973 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10974 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10975
10976 /*-----------------------------------------------------------------------
10977 Get message buffer
10978 -----------------------------------------------------------------------*/
10979
10980 reqLen = sizeof(tStartOemDataReqParams);
10981
10982 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10983 WDI_START_OEM_DATA_REQ, reqLen,
10984 &pSendBuffer, &usDataOffset, &usSendSize))||
10985 (usSendSize < (usDataOffset + reqLen)))
10986 {
10987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010988 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010989 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10990 WDI_ASSERT(0);
10991 return WDI_STATUS_E_FAILURE;
10992 }
10993
10994 //copying WDI OEM DATA REQ PARAMS to shared memory
10995 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10996
10997 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10998 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10999
11000 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11001 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11002
11003 /*-------------------------------------------------------------------------
11004 Send Start Request to HAL
11005 -------------------------------------------------------------------------*/
11006 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11007 wdiOemDataRspCb, pEventData->pUserData,
11008 WDI_START_OEM_DATA_RESP);
11009}/*WDI_ProcessStartOemDataReq*/
11010#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011011
11012/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011013 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011014 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011015
11016 @param pWDICtx: pointer to the WLAN DAL context
11017 pEventData: pointer to the event information structure
11018
Jeff Johnson295189b2012-06-20 16:38:30 -070011019 @see
11020 @return Result of the function call
11021*/
11022WDI_Status
11023WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011024(
Jeff Johnson295189b2012-06-20 16:38:30 -070011025 WDI_ControlBlockType* pWDICtx,
11026 WDI_EventInfoType* pEventData
11027)
11028{
11029 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11030 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011031 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011032 wpt_uint16 usDataOffset = 0;
11033 wpt_uint16 usSendSize = 0;
11034 tHalWlanHostResumeReqParam halResumeReqParams;
11035
11036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11037
11038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011039 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011040 -------------------------------------------------------------------------*/
11041 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11042 ( NULL == pEventData->pCBfnc ))
11043 {
11044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011045 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011046 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011047 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011048 }
11049
11050 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11051 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11052
11053 /*-----------------------------------------------------------------------
11054 Get message buffer
11055 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011057 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11058 &pSendBuffer, &usDataOffset, &usSendSize))||
11059 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11060 {
11061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011062 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011066 }
11067
Jeff Johnsone7245742012-09-05 17:12:55 -070011068 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011069 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011070
11071 wpalMemoryCopy( pSendBuffer+usDataOffset,
11072 &halResumeReqParams,
11073 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011074
11075 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011076 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011077
11078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011081 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11082 wdiHostResumeRspCb, pEventData->pUserData,
11083 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011084}/*WDI_ProcessHostResumeReq*/
11085
11086/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011087 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011088 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011089
11090 @param pWDICtx: pointer to the WLAN DAL context
11091 pEventData: pointer to the event information structure
11092
Jeff Johnson295189b2012-06-20 16:38:30 -070011093 @see
11094 @return Result of the function call
11095*/
11096WDI_Status
11097WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011098(
Jeff Johnson295189b2012-06-20 16:38:30 -070011099 WDI_ControlBlockType* pWDICtx,
11100 WDI_EventInfoType* pEventData
11101)
11102{
11103 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11104 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011105 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011106 wpt_uint16 usDataOffset = 0;
11107 wpt_uint16 usSendSize = 0;
11108 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11110
11111 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011112 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011113 -------------------------------------------------------------------------*/
11114 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11115 ( NULL == pEventData->pCBfnc ))
11116 {
11117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011118 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 }
11122
11123 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11124 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011125
Jeff Johnson295189b2012-06-20 16:38:30 -070011126 /*-----------------------------------------------------------------------
11127 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011128 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011129 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011130 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011131 sizeof(halTxPerTrackingReqParam),
11132 &pSendBuffer, &usDataOffset, &usSendSize))||
11133 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11134 {
11135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011136 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011137 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011140 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011141
Jeff Johnson295189b2012-06-20 16:38:30 -070011142 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11143 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11144 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11145 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011146
11147 wpalMemoryCopy( pSendBuffer+usDataOffset,
11148 &halTxPerTrackingReqParam,
11149 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011150
11151 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011152 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011153
11154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011155 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011156 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011157 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11158 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011159}/*WDI_ProcessSetTxPerTrackingReq*/
11160
11161/*=========================================================================
11162 Indications
11163=========================================================================*/
11164
11165/**
11166 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011167
11168 @param pWDICtx: pointer to the WLAN DAL context
11169 pEventData: pointer to the event information structure
11170
Jeff Johnson295189b2012-06-20 16:38:30 -070011171 @see
11172 @return Result of the function call
11173*/
11174WDI_Status
11175WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011176(
Jeff Johnson295189b2012-06-20 16:38:30 -070011177 WDI_ControlBlockType* pWDICtx,
11178 WDI_EventInfoType* pEventData
11179)
11180{
11181 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011182 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011183 wpt_uint16 usDataOffset = 0;
11184 wpt_uint16 usSendSize = 0;
11185 WDI_Status wdiStatus;
11186 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11188
11189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011190 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011191 -------------------------------------------------------------------------*/
11192 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11193 {
11194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011195 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011196 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011197 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011198 }
11199
11200 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11201
11202 /*-----------------------------------------------------------------------
11203 Get message buffer
11204 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11206 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011207 sizeof(halWlanSuspendIndparams),
11208 &pSendBuffer, &usDataOffset, &usSendSize))||
11209 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11210 {
11211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11212 "Unable to get send buffer in Suspend Ind ");
11213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 }
11216
11217 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11218 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11219
Jeff Johnsone7245742012-09-05 17:12:55 -070011220 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011221 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011222
Jeff Johnsone7245742012-09-05 17:12:55 -070011223 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11224 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011225
11226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011227 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011228 -------------------------------------------------------------------------*/
11229 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011230 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011231
Jeff Johnsone7245742012-09-05 17:12:55 -070011232 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011233 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11234}/*WDI_ProcessHostSuspendInd*/
11235
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011236
11237
11238/**
11239 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11240
11241 @param pWDICtx: pointer to the WLAN DAL context
11242 pEventData: pointer to the event information structure
11243
11244 @see
11245 @return Result of the function call
11246*/
11247WDI_Status
11248WDI_ProcessTrafficStatsInd
11249(
11250 WDI_ControlBlockType* pWDICtx,
11251 WDI_EventInfoType* pEventData
11252)
11253{
11254 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11255 wpt_uint8* pSendBuffer = NULL;
11256 wpt_uint16 usDataOffset = 0;
11257 wpt_uint16 usSendSize = 0;
11258 WDI_Status wdiStatus;
11259 tStatsClassBIndParams* pStatsClassBIndParams;
11260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11261
11262 /*-------------------------------------------------------------------------
11263 Sanity check
11264 -------------------------------------------------------------------------*/
11265 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11266 {
11267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11268 "%s: Invalid parameters in Traffic Stats ind",__func__);
11269 WDI_ASSERT(0);
11270 return WDI_STATUS_E_FAILURE;
11271 }
11272
11273 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11274
11275 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11276 {
11277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11278 "%s: Invalid parameters in Traffic Stats ind",__func__);
11279 WDI_ASSERT(0);
11280 return WDI_STATUS_E_FAILURE;
11281 }
11282
11283 /*-----------------------------------------------------------------------
11284 Get message buffer
11285 -----------------------------------------------------------------------*/
11286 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11287 WDI_TRAFFIC_STATS_IND,
11288 sizeof(tStatsClassBIndParams),
11289 &pSendBuffer, &usDataOffset, &usSendSize))||
11290 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11291 {
11292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11293 "Unable to get send buffer in Traffic Stats Ind ");
11294 WDI_ASSERT(0);
11295 return WDI_STATUS_E_FAILURE;
11296 }
11297
11298 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11299
11300 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11301
11302 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11303 pTrafficStatsIndParams->pTrafficStats,
11304 pTrafficStatsIndParams->length);
11305
11306 /*-------------------------------------------------------------------------
11307 Send Suspend Request to HAL
11308 -------------------------------------------------------------------------*/
11309 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11310 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11311
11312 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11313 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11314}/*WDI_ProcessTrafficStatsInd*/
11315
Chet Lanctot186b5732013-03-18 10:26:30 -070011316#ifdef WLAN_FEATURE_11W
11317/**
11318 @brief Process Exclude Unencrypted Indications function (called
11319 when Main FSM allows it)
11320
11321 @param pWDICtx: pointer to the WLAN DAL context
11322 pEventData: pointer to the event information structure
11323
11324 @see
11325 @return Result of the function call
11326*/
11327WDI_Status
11328WDI_ProcessExcludeUnencryptInd
11329(
11330 WDI_ControlBlockType* pWDICtx,
11331 WDI_EventInfoType* pEventData
11332)
11333{
11334 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11335 wpt_uint8* pSendBuffer = NULL;
11336 wpt_uint16 usDataOffset = 0;
11337 wpt_uint16 usSendSize = 0;
11338 WDI_Status wdiStatus;
11339 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11341
11342 /*-------------------------------------------------------------------------
11343 Sanity check
11344 -------------------------------------------------------------------------*/
11345 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11346 {
11347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11348 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11349 WDI_ASSERT(0);
11350 return WDI_STATUS_E_FAILURE;
11351 }
11352
11353 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11354
11355 /*-----------------------------------------------------------------------
11356 Get message buffer
11357 -----------------------------------------------------------------------*/
11358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11359 WDI_EXCLUDE_UNENCRYPTED_IND,
11360 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11361 &pSendBuffer, &usDataOffset, &usSendSize))||
11362 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11363 {
11364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11365 "Unable to get send buffer in Exclude Unencrypted Ind ");
11366 WDI_ASSERT(0);
11367 return WDI_STATUS_E_FAILURE;
11368 }
11369
11370 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11371
11372 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11373
11374 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11375 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11376
11377 /*-------------------------------------------------------------------------
11378 Send Suspend Request to HAL
11379 -------------------------------------------------------------------------*/
11380 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11381 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11382
11383 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11384 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11385}/*WDI_ProcessExcludeUnencryptInd*/
11386#endif
11387
Yue Mab9c86f42013-08-14 15:59:08 -070011388/**
11389 @brief Process Add Periodic Tx Pattern Indication function (called when
11390 Main FSM allows it)
11391
11392 @param pWDICtx: pointer to the WLAN DAL context
11393 pEventData: pointer to the event information structure
11394
11395 @see
11396 @return Result of the function call
11397*/
11398WDI_Status
11399WDI_ProcessAddPeriodicTxPtrnInd
11400(
11401 WDI_ControlBlockType* pWDICtx,
11402 WDI_EventInfoType* pEventData
11403)
11404{
11405 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11406 wpt_uint8* pSendBuffer = NULL;
11407 wpt_uint16 usDataOffset = 0;
11408 wpt_uint16 usSendSize = 0;
11409 WDI_Status wdiStatus;
11410 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11411 wpt_uint8 selfStaIdx = 0;
11412
11413 /*-------------------------------------------------------------------------
11414 Sanity check
11415 -------------------------------------------------------------------------*/
11416 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11417 {
11418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11419 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11420 WDI_ASSERT(0);
11421 return WDI_STATUS_E_FAILURE;
11422 }
11423
11424 pAddPeriodicTxPtrnParams =
11425 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11426
11427 /*------------------------------------------------------------------------
11428 Get message buffer
11429 ------------------------------------------------------------------------*/
11430 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11431 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11432 &pSendBuffer, &usDataOffset, &usSendSize))||
11433 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11434 {
11435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11436 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11437 __func__);
11438 WDI_ASSERT(0);
11439 return WDI_STATUS_E_FAILURE;
11440 }
11441
11442 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11443
11444 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11445 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11446 &selfStaIdx))
11447 {
11448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11449 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011450 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011451
11452 return WDI_STATUS_E_FAILURE;
11453 }
11454
11455 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11456 halAddPeriodicTxPtrn->ucPtrnId =
11457 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11458 halAddPeriodicTxPtrn->usPtrnSize =
11459 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11460 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11461 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11462
11463 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11464 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11465 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11466
11467 /*-------------------------------------------------------------------------
11468 Send Indication to HAL
11469 -------------------------------------------------------------------------*/
11470 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11471 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11472
11473 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11474
11475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11476 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11477
11478 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11479} /* WDI_ProcessAddPeriodicTxPtrnInd */
11480
11481/**
11482 @brief Process Delete Periodic Tx Pattern Indication function (called when
11483 Main FSM allows it)
11484
11485 @param pWDICtx: pointer to the WLAN DAL context
11486 pEventData: pointer to the event information structure
11487
11488 @see
11489 @return Result of the function call
11490*/
11491WDI_Status
11492WDI_ProcessDelPeriodicTxPtrnInd
11493(
11494 WDI_ControlBlockType* pWDICtx,
11495 WDI_EventInfoType* pEventData
11496)
11497{
11498 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11499 wpt_uint8* pSendBuffer = NULL;
11500 wpt_uint16 usDataOffset = 0;
11501 wpt_uint16 usSendSize = 0;
11502 WDI_Status wdiStatus;
11503 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11504 wpt_uint8 selfStaIdx = 0;
11505
11506 /*-------------------------------------------------------------------------
11507 Sanity check
11508 -------------------------------------------------------------------------*/
11509 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11510 {
11511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11512 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11513 WDI_ASSERT(0);
11514 return WDI_STATUS_E_FAILURE;
11515 }
11516
11517 pDelPeriodicTxPtrnParams =
11518 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11519
11520 /*------------------------------------------------------------------------
11521 Get message buffer
11522 ------------------------------------------------------------------------*/
11523 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11524 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11525 &pSendBuffer, &usDataOffset, &usSendSize))||
11526 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11527 {
11528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11529 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11530 __func__);
11531 WDI_ASSERT(0);
11532 return WDI_STATUS_E_FAILURE;
11533 }
11534
11535 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11536
11537 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11538 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11539 &selfStaIdx))
11540 {
11541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11542 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011543 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011544
11545 return WDI_STATUS_E_FAILURE;
11546 }
11547
11548 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11549 halDelPeriodicTxPtrn->uPatternIdBitmap =
11550 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11551
11552 /*-------------------------------------------------------------------------
11553 Send Indication to HAL
11554 -------------------------------------------------------------------------*/
11555 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11556 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11557
11558 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11559
11560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11561 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11562
11563 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11564} /* WDI_ProcessDelPeriodicTxPtrnInd */
11565
Jeff Johnson295189b2012-06-20 16:38:30 -070011566/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011568==========================================================================*/
11569/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011570 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011571 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011572
11573 @param pWDICtx: pointer to the WLAN DAL context
11574 pEventData: pointer to the event information structure
11575
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 @see
11577 @return Result of the function call
11578*/
11579WDI_Status
11580WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011581(
Jeff Johnson295189b2012-06-20 16:38:30 -070011582 WDI_ControlBlockType* pWDICtx,
11583 WDI_EventInfoType* pEventData
11584)
11585{
11586 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11587 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011588 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011589 wpt_uint16 usDataOffset = 0;
11590 wpt_uint16 usSendSize = 0;
11591 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11593
11594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 -------------------------------------------------------------------------*/
11597 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11598 ( NULL == pEventData->pCBfnc ))
11599 {
11600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011604 }
11605
11606 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11607 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11608 /*-----------------------------------------------------------------------
11609 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011610 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011611 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011612 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011613 sizeof(halSwitchChannelReq.switchChannelParams),
11614 &pSendBuffer, &usDataOffset, &usSendSize))||
11615 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11616 {
11617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011618 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011619 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 }
11623
Jeff Johnsone7245742012-09-05 17:12:55 -070011624 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011625 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011626#ifndef WLAN_FEATURE_VOWIFI
11627 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011628 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11629#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011631 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11632
11633#ifdef WLAN_FEATURE_VOWIFI
11634 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011635 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011636 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11637 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11638 WDI_MAC_ADDR_LEN);
11639 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11640 pwdiSwitchChParams->wdiChInfo.macBSSId,
11641 WDI_MAC_ADDR_LEN);
11642#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011643 wpalMemoryCopy( pSendBuffer+usDataOffset,
11644 &halSwitchChannelReq.switchChannelParams,
11645 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011646
11647 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011648 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011649
11650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011651 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011652 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011653 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11654 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011655}/*WDI_ProcessChannelSwitchReq*/
11656
11657/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011658 @brief Process Channel Switch Request function (called when
11659 Main FSM allows it)
11660
11661 @param pWDICtx: pointer to the WLAN DAL context
11662 pEventData: pointer to the event information structure
11663
11664 @see
11665 @return Result of the function call
11666*/
11667WDI_Status WDI_ProcessChannelSwitchReq_V1
11668(
11669 WDI_ControlBlockType* pWDICtx,
11670 WDI_EventInfoType* pEventData
11671)
11672{
11673 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
11674 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
11675 wpt_uint8* pSendBuffer = NULL;
11676 wpt_uint16 usDataOffset = 0;
11677 wpt_uint16 usSendSize = 0;
11678 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
11679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11680
11681 /*-------------------------------------------------------------------------
11682 Sanity check
11683 -------------------------------------------------------------------------*/
11684 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11685 ( NULL == pEventData->pCBfnc ))
11686 {
11687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11688 "%s: Invalid parameters", __func__);
11689 WDI_ASSERT(0);
11690 return WDI_STATUS_E_FAILURE;
11691 }
11692
11693 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
11694 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
11695 /*-----------------------------------------------------------------------
11696 Get message buffer
11697 ! TO DO : proper conversion into the HAL Message Request Format
11698 -----------------------------------------------------------------------*/
11699 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11700 WDI_CH_SWITCH_REQ_V1,
11701 sizeof(halSwitchChannelReq.switchChannelParams_V1),
11702 &pSendBuffer, &usDataOffset, &usSendSize))||
11703 ( usSendSize < (usDataOffset +
11704 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
11705 {
11706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11707 "Unable to get send buffer in channel switch req %p %p %p",
11708 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11709 WDI_ASSERT(0);
11710 return WDI_STATUS_E_FAILURE;
11711 }
11712
11713 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
11714 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
11715
11716 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
11717 pwdiSwitchChParams->wdiChInfo.ucChannel;
11718#ifndef WLAN_FEATURE_VOWIFI
11719 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
11720 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11721#endif
11722 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
11723 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11724
11725#ifdef WLAN_FEATURE_VOWIFI
11726 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
11727 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
11728 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
11729 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11730 WDI_MAC_ADDR_LEN);
11731 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
11732 pwdiSwitchChParams->wdiChInfo.macBSSId,
11733 WDI_MAC_ADDR_LEN);
11734#endif
11735 wpalMemoryCopy( pSendBuffer+usDataOffset,
11736 &halSwitchChannelReq.switchChannelParams_V1,
11737 sizeof(halSwitchChannelReq.switchChannelParams_V1));
11738
11739 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
11740 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
11741
11742 /*-------------------------------------------------------------------------
11743 Send Switch Channel Request to HAL
11744 -------------------------------------------------------------------------*/
11745 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11746 wdiSwitchChRspCb, pEventData->pUserData,
11747 WDI_CH_SWITCH_RESP_V1);
11748}/*WDI_ProcessChannelSwitchReq_V1*/
11749
11750/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011751 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011753
11754 @param pWDICtx: pointer to the WLAN DAL context
11755 pEventData: pointer to the event information structure
11756
Jeff Johnson295189b2012-06-20 16:38:30 -070011757 @see
11758 @return Result of the function call
11759*/
11760WDI_Status
11761WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011762(
Jeff Johnson295189b2012-06-20 16:38:30 -070011763 WDI_ControlBlockType* pWDICtx,
11764 WDI_EventInfoType* pEventData
11765)
11766{
11767 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11768 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011769 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011770 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011771 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011772 wpt_uint16 usDataOffset = 0;
11773 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011774 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011775
Jeff Johnsone7245742012-09-05 17:12:55 -070011776 tConfigStaReqMsg halConfigStaReqMsg;
11777 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11779
11780 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011781 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011782 -------------------------------------------------------------------------*/
11783 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11784 ( NULL == pEventData->pCBfnc ))
11785 {
11786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011787 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011788 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011789 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011790 }
11791
Abhishek Singh6927fa02014-06-27 17:19:55 +053011792 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011793 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11794 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11795 /*-------------------------------------------------------------------------
11796 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011797 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011798 -------------------------------------------------------------------------*/
11799 wpalMutexAcquire(&pWDICtx->wptMutex);
11800
11801 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011802 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011803 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011804 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11805 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11806 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011807
Jeff Johnsone7245742012-09-05 17:12:55 -070011808 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011809 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11811 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11812 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011813
11814 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011815 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011816 }
11817
11818 /*------------------------------------------------------------------------
11819 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011820 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011821 ------------------------------------------------------------------------*/
11822 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11823 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11825 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11826 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011827
Jeff Johnsone7245742012-09-05 17:12:55 -070011828 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011829 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011830 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011831 }
11832
11833 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011834
11835 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11836#ifdef WLAN_FEATURE_11AC
11837 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011838 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011839 else
11840#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011841 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011842
Jeff Johnson295189b2012-06-20 16:38:30 -070011843 /*-----------------------------------------------------------------------
11844 Get message buffer
11845 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011846 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11847 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011848 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011849 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 {
11851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011852 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011853 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011856 }
11857
11858 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011859 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011860 &pwdiConfigSTAParams->wdiReqInfo);
11861
11862 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11863 {
11864 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011865 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011866 WDI_STATableFindStaidByAddr(pWDICtx,
11867 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011868 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011869 {
11870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011871 MAC_ADDRESS_STR
11872 ": This station does not exist in the WDI Station Table",
11873 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011874 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011875 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011877 }
11878 }
11879 else
11880 {
11881 /* Need to fill in the STA Index to invalid, since at this point we have not
11882 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011883 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011884 }
11885
11886 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011887 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011888
Jeff Johnsone7245742012-09-05 17:12:55 -070011889 wpalMemoryCopy( pSendBuffer+usDataOffset,
11890 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011891 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011892
11893 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011894 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011895
Jeff Johnsone7245742012-09-05 17:12:55 -070011896 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11897 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011898 sizeof(pWDICtx->wdiCachedConfigStaReq));
11899
11900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011901 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011903 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11904 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011905}/*WDI_ProcessConfigStaReq*/
11906
11907
11908/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011909 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011910 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011911
11912 @param pWDICtx: pointer to the WLAN DAL context
11913 pEventData: pointer to the event information structure
11914
Jeff Johnson295189b2012-06-20 16:38:30 -070011915 @see
11916 @return Result of the function call
11917*/
11918WDI_Status
11919WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011920(
Jeff Johnson295189b2012-06-20 16:38:30 -070011921 WDI_ControlBlockType* pWDICtx,
11922 WDI_EventInfoType* pEventData
11923)
11924{
11925 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11926 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011927 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011928 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011929 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 wpt_uint16 usDataOffset = 0;
11931 wpt_uint16 usSendSize = 0;
11932 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011933 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11935
11936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011937 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011938 -------------------------------------------------------------------------*/
11939 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11940 ( NULL == pEventData->pCBfnc ))
11941 {
11942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011943 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011946 }
11947
11948 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11949 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11950 /*-------------------------------------------------------------------------
11951 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011952 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011953 -------------------------------------------------------------------------*/
11954 wpalMutexAcquire(&pWDICtx->wptMutex);
11955
11956 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011957 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011959 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11960 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11961 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011962
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011964 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011966 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11967 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011968 }
11969 else
11970 {
11971 /*------------------------------------------------------------------------
11972 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011973 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011974 ------------------------------------------------------------------------*/
11975 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11976 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11978 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11979 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11980
11981 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011982 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011983 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 }
11985 }
11986 /* If the link is set to enter IDLE - the Session allocated for this BSS
11987 will be deleted on the Set Link State response coming from HAL
11988 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011989 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011990 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11991
11992 wpalMutexRelease(&pWDICtx->wptMutex);
11993 /*-----------------------------------------------------------------------
11994 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011995 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011996 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011997
11998 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011999 sizeof(halLinkStateReqMsg),
12000 &pSendBuffer, &usDataOffset, &usSendSize))||
12001 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12002 {
12003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012004 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12006 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012008 }
12009
12010 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12011 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12012
12013 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12014 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12015
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12018
Jeff Johnsone7245742012-09-05 17:12:55 -070012019 wpalMemoryCopy( pSendBuffer+usDataOffset,
12020 &halLinkStateReqMsg,
12021 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012022
12023 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012024 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012025
12026 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012027 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012028 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012029 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12030 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012031}/*WDI_ProcessSetLinkStateReq*/
12032
12033
12034/**
12035 @brief Process Get Stats Request function (called when Main FSM
12036 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012037
12038 @param pWDICtx: pointer to the WLAN DAL context
12039 pEventData: pointer to the event information structure
12040
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 @see
12042 @return Result of the function call
12043*/
12044WDI_Status
12045WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012046(
Jeff Johnson295189b2012-06-20 16:38:30 -070012047 WDI_ControlBlockType* pWDICtx,
12048 WDI_EventInfoType* pEventData
12049)
12050{
12051 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12052 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012053 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012054 wpt_uint16 usDataOffset = 0;
12055 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012056 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012057 WDI_BSSSessionType* pBSSSes = NULL;
12058 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012059 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012060 tHalStatsReqMsg halStatsReqMsg;
12061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12062
12063 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012064 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012065 -------------------------------------------------------------------------*/
12066 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12067 ( NULL == pEventData->pCBfnc ) )
12068 {
12069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012070 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012071 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012073 }
12074
12075 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12076 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12077
12078 /*-------------------------------------------------------------------------
12079 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012080 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012081 -------------------------------------------------------------------------*/
12082 wpalMutexAcquire(&pWDICtx->wptMutex);
12083
12084 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012085 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012086 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012087 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12088 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012089 &macBSSID))
12090 {
12091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012092 "This station does not exist in the WDI Station Table %d",
12093 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012094 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012096 }
12097
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12099 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012100 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12102 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12103 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012104
12105 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012106 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012107 }
12108
12109 /*------------------------------------------------------------------------
12110 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012111 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012112 ------------------------------------------------------------------------*/
12113 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12114 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12116 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12117 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012118
Jeff Johnsone7245742012-09-05 17:12:55 -070012119 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012120 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012121 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012122 }
12123
12124
12125 wpalMutexRelease(&pWDICtx->wptMutex);
12126
12127 /*-----------------------------------------------------------------------
12128 Get message buffer
12129 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012130 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 sizeof(halStatsReqMsg.statsReqParams),
12132 &pSendBuffer, &usDataOffset, &usSendSize))||
12133 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12134 {
12135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012136 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012140 }
12141
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012144 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012146 wpalMemoryCopy( pSendBuffer+usDataOffset,
12147 &halStatsReqMsg.statsReqParams,
12148 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012149
12150 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012151 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012152
12153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012154 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012155 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012156 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12157 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012158}/*WDI_ProcessGetStatsReq*/
12159
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012160#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012161/**
12162 @brief Process Get Roam Rssi Request function (called when Main FSM
12163 allows it)
12164
12165 @param pWDICtx: pointer to the WLAN DAL context
12166 pEventData: pointer to the event information structure
12167
12168 @see
12169 @return Result of the function call
12170*/
12171WDI_Status
12172WDI_ProcessGetRoamRssiReq
12173(
12174 WDI_ControlBlockType* pWDICtx,
12175 WDI_EventInfoType* pEventData
12176)
12177{
12178 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12179 WDI_GetStatsRspCb wdiGetStatsRspCb;
12180 wpt_uint8* pSendBuffer = NULL;
12181 wpt_uint16 usDataOffset = 0;
12182 wpt_uint16 usSendSize = 0;
12183 wpt_uint8 ucCurrentBSSSesIdx = 0;
12184 WDI_BSSSessionType* pBSSSes = NULL;
12185 wpt_macAddr macBSSID;
12186 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12187 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12189 /*-------------------------------------------------------------------------
12190 Sanity check
12191 -------------------------------------------------------------------------*/
12192 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12193 ( NULL == pEventData->pCBfnc ) )
12194 {
12195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12196 "%s: Invalid parameters", __func__);
12197 WDI_ASSERT(0);
12198 return WDI_STATUS_E_FAILURE;
12199 }
12200
12201 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12202 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12203
12204 /*-------------------------------------------------------------------------
12205 Check to see if we are in the middle of an association, if so queue, if
12206 not it means it is free to process request
12207 -------------------------------------------------------------------------*/
12208 wpalMutexAcquire(&pWDICtx->wptMutex);
12209
12210 /*------------------------------------------------------------------------
12211 Find the BSS for which the request is made
12212 ------------------------------------------------------------------------*/
12213 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12214 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12215 &macBSSID))
12216 {
12217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012218 "This station does not exist in the WDI Station Table %d",
12219 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012220 wpalMutexRelease(&pWDICtx->wptMutex);
12221 return WDI_STATUS_E_FAILURE;
12222 }
12223
12224 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12225 if ( NULL == pBSSSes )
12226 {
12227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12228 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12229 __func__, MAC_ADDR_ARRAY(macBSSID));
12230
12231 wpalMutexRelease(&pWDICtx->wptMutex);
12232 return WDI_STATUS_E_NOT_ALLOWED;
12233 }
12234
12235 /*------------------------------------------------------------------------
12236 Check if this BSS is being currently processed or queued,
12237 if queued - queue the new request as well
12238 ------------------------------------------------------------------------*/
12239 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12240 {
12241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12242 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12243 __func__, MAC_ADDR_ARRAY(macBSSID));
12244
12245 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12246 wpalMutexRelease(&pWDICtx->wptMutex);
12247 return wdiStatus;
12248 }
12249
12250 wpalMutexRelease(&pWDICtx->wptMutex);
12251
12252 /*-----------------------------------------------------------------------
12253 Get message buffer
12254 -----------------------------------------------------------------------*/
12255 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12256 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12257 &pSendBuffer, &usDataOffset, &usSendSize))||
12258 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12259 {
12260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012261 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012262 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12263 WDI_ASSERT(0);
12264 return WDI_STATUS_E_FAILURE;
12265 }
12266
12267 halRssiRoamReqMsg.roamRssiReqParams.staId =
12268 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12269 wpalMemoryCopy( pSendBuffer+usDataOffset,
12270 &halRssiRoamReqMsg.roamRssiReqParams,
12271 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12272
12273 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12274 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12275
12276 /*-------------------------------------------------------------------------
12277 Send Get STA Request to HAL
12278 -------------------------------------------------------------------------*/
12279 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12280 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12281}/*WDI_ProcessGetRoamRssiReq*/
12282#endif
12283
Jeff Johnson295189b2012-06-20 16:38:30 -070012284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012285 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012286 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012287
12288 @param pWDICtx: pointer to the WLAN DAL context
12289 pEventData: pointer to the event information structure
12290
Jeff Johnson295189b2012-06-20 16:38:30 -070012291 @see
12292 @return Result of the function call
12293*/
12294WDI_Status
12295WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012296(
Jeff Johnson295189b2012-06-20 16:38:30 -070012297 WDI_ControlBlockType* pWDICtx,
12298 WDI_EventInfoType* pEventData
12299)
12300{
12301 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12302 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12303
Jeff Johnsone7245742012-09-05 17:12:55 -070012304 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012305 wpt_uint16 usDataOffset = 0;
12306 wpt_uint16 usSendSize = 0;
12307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12308
12309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012311 -------------------------------------------------------------------------*/
12312 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12313 ( NULL == pEventData->pCBfnc))
12314 {
12315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012319 }
12320
12321 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12322 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12323
12324 /*-----------------------------------------------------------------------
12325 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012326 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012327 -----------------------------------------------------------------------*/
12328
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12331 &pSendBuffer, &usDataOffset, &usSendSize))||
12332 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12333 {
12334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012335 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012336 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12337 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012338 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012339 }
12340
Jeff Johnsone7245742012-09-05 17:12:55 -070012341 wpalMemoryCopy( pSendBuffer+usDataOffset,
12342 &pwdiUpdateCfgParams->uConfigBufferLen,
12343 sizeof(wpt_uint32));
12344 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12345 pwdiUpdateCfgParams->pConfigBuffer,
12346 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012347
12348 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012350
12351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012352 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012353 -------------------------------------------------------------------------*/
12354
Jeff Johnsone7245742012-09-05 17:12:55 -070012355 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12356 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012357
12358}/*WDI_ProcessUpdateCfgReq*/
12359
12360
12361/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012362 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012363 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012364
12365 @param pWDICtx: pointer to the WLAN DAL context
12366 pEventData: pointer to the event information structure
12367
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 @see
12369 @return Result of the function call
12370*/
12371WDI_Status
12372WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012373(
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 WDI_ControlBlockType* pWDICtx,
12375 WDI_EventInfoType* pEventData
12376)
12377{
12378 WDI_AddBAReqParamsType* pwdiAddBAParams;
12379 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012380 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012381 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012382 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 wpt_uint16 usDataOffset = 0;
12384 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012385 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012386 wpt_macAddr macBSSID;
12387
12388 tAddBAReqMsg halAddBAReq;
12389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12390
12391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012392 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012393 -------------------------------------------------------------------------*/
12394 if (( NULL == pEventData ) ||
12395 ( NULL == pEventData->pEventData) ||
12396 ( NULL == pEventData->pCBfnc ))
12397 {
12398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012399 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012402 }
12403
12404 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12405 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12406
12407 /*-------------------------------------------------------------------------
12408 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 -------------------------------------------------------------------------*/
12411 wpalMutexAcquire(&pWDICtx->wptMutex);
12412
12413 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12417 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012418 &macBSSID))
12419 {
12420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012421 "This station does not exist in the WDI Station Table %d",
12422 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012425 }
12426
Jeff Johnsone7245742012-09-05 17:12:55 -070012427 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12428 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012429 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12431 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12432 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012433
12434 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012436 }
12437
12438 /*------------------------------------------------------------------------
12439 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012440 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012441 ------------------------------------------------------------------------*/
12442 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12443 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12445 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12446 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012447
Jeff Johnsone7245742012-09-05 17:12:55 -070012448 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012449 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012450 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 }
12452
12453
12454 wpalMutexRelease(&pWDICtx->wptMutex);
12455 /*-----------------------------------------------------------------------
12456 Get message buffer
12457 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 sizeof(halAddBAReq.addBAParams),
12460 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012461 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012462 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12463 {
12464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012465 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012466 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012469 }
12470
Jeff Johnsone7245742012-09-05 17:12:55 -070012471 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012472 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12473 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12474#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012475 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012476 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12477#endif
12478
Jeff Johnsone7245742012-09-05 17:12:55 -070012479 wpalMemoryCopy( pSendBuffer+usDataOffset,
12480 &halAddBAReq.addBAParams,
12481 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012482
12483 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012484 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012485
12486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012487 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012488 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012489 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12490 wdiAddBARspCb, pEventData->pUserData,
12491 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012492}/*WDI_ProcessAddBAReq*/
12493
12494
12495
12496/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012498 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012499
12500 @param pWDICtx: pointer to the WLAN DAL context
12501 pEventData: pointer to the event information structure
12502
Jeff Johnson295189b2012-06-20 16:38:30 -070012503 @see
12504 @return Result of the function call
12505*/
12506WDI_Status
12507WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012508(
Jeff Johnson295189b2012-06-20 16:38:30 -070012509 WDI_ControlBlockType* pWDICtx,
12510 WDI_EventInfoType* pEventData
12511)
12512{
12513 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12514 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012515 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012516 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012517 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 wpt_uint16 usDataOffset = 0;
12519 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012520 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012521 wpt_uint16 index;
12522 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012523
Jeff Johnson295189b2012-06-20 16:38:30 -070012524 tTriggerBAReqMsg halTriggerBAReq;
12525 tTriggerBaReqCandidate* halTriggerBACandidate;
12526 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12528
12529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 -------------------------------------------------------------------------*/
12532 if (( NULL == pEventData ) ||
12533 ( NULL == pEventData->pEventData ) ||
12534 ( NULL == pEventData->pCBfnc ))
12535 {
12536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012537 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012540 }
12541
12542 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12543 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12544 /*-------------------------------------------------------------------------
12545 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 -------------------------------------------------------------------------*/
12548 wpalMutexAcquire(&pWDICtx->wptMutex);
12549
12550 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012551 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012552 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012553 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12554 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 &macBSSID))
12556 {
12557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012558 "This station does not exist in the WDI Station Table %d",
12559 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012562 }
12563
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12565 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012566 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12568 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12569 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012570
12571 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012572 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012573 }
12574
12575 /*------------------------------------------------------------------------
12576 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012577 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 ------------------------------------------------------------------------*/
12579 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12580 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12582 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12583 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012584
Jeff Johnsone7245742012-09-05 17:12:55 -070012585 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012586 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012587 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012588 }
12589
12590
12591 wpalMutexRelease(&pWDICtx->wptMutex);
12592 /*-----------------------------------------------------------------------
12593 Get message buffer
12594 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12596 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012598 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012599 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12600 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012601 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012602 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012603 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012604 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12605 {
12606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012607 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012608 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 }
12612
Jeff Johnsone7245742012-09-05 17:12:55 -070012613 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012614 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012615 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012616 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12617
Jeff Johnsone7245742012-09-05 17:12:55 -070012618 wpalMemoryCopy( pSendBuffer+usDataOffset,
12619 &halTriggerBAReq.triggerBAParams,
12620 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012621
Jeff Johnsone7245742012-09-05 17:12:55 -070012622 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012623 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12624 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12625 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012626
12627 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012628 index++)
12629 {
12630 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12631 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12632 halTriggerBACandidate++;
12633 wdiTriggerBACandidate++;
12634 }
12635
12636 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012637 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012638
12639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012640 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012641 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012642 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12643 wdiTriggerBARspCb, pEventData->pUserData,
12644 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012645}/*WDI_ProcessTriggerBAReq*/
12646
12647
12648
12649/**
12650 @brief Process Update Beacon Params Request function (called when Main FSM
12651 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012652
12653 @param pWDICtx: pointer to the WLAN DAL context
12654 pEventData: pointer to the event information structure
12655
Jeff Johnson295189b2012-06-20 16:38:30 -070012656 @see
12657 @return Result of the function call
12658*/
12659WDI_Status
12660WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012661(
Jeff Johnson295189b2012-06-20 16:38:30 -070012662 WDI_ControlBlockType* pWDICtx,
12663 WDI_EventInfoType* pEventData
12664)
12665{
12666 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12667 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012668 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012669 wpt_uint16 usDataOffset = 0;
12670 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012671 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12673
12674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012675 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012676 -------------------------------------------------------------------------*/
12677 if (( NULL == pEventData ) ||
12678 ( NULL == pEventData->pEventData) ||
12679 ( NULL == pEventData->pCBfnc))
12680 {
12681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012685 }
12686
12687 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12688 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12689 /*-----------------------------------------------------------------------
12690 Get message buffer
12691 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 sizeof(halUpdateBeaconParams),
12694 &pSendBuffer, &usDataOffset, &usSendSize))||
12695 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12696 {
12697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012698 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012699 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012702 }
12703
12704 /*BSS Index of the BSS*/
12705 halUpdateBeaconParams.bssIdx =
12706 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12707 /*shortPreamble mode. HAL should update all the STA rates when it
12708 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012709 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012710 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12711 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012712 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012713 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12714 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012715 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012716 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12717
12718 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012719 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012720 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012721 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012722 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012723 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012724 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012725 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012726 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012727 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012728 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012729 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012730 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12731 halUpdateBeaconParams.fRIFSMode =
12732 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012733 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12735
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12737 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012738
12739 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012740 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012741
12742 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012743 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012744 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012745 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12746 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012747}/*WDI_ProcessUpdateBeaconParamsReq*/
12748
12749
12750
12751/**
12752 @brief Process Send Beacon template Request function (called when Main FSM
12753 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012754
12755 @param pWDICtx: pointer to the WLAN DAL context
12756 pEventData: pointer to the event information structure
12757
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 @see
12759 @return Result of the function call
12760*/
12761WDI_Status
12762WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012763(
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 WDI_ControlBlockType* pWDICtx,
12765 WDI_EventInfoType* pEventData
12766)
12767{
12768 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12769 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012770 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012771 wpt_uint16 usDataOffset = 0;
12772 wpt_uint16 usSendSize = 0;
12773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12774
12775 tSendBeaconReqMsg halSendBeaconReq;
12776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012778 -------------------------------------------------------------------------*/
12779 if (( NULL == pEventData ) ||
12780 ( NULL == pEventData->pEventData ) ||
12781 ( NULL == pEventData->pCBfnc ))
12782 {
12783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012784 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012786 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012787 }
12788
12789 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12790 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12791 /*-----------------------------------------------------------------------
12792 Get message buffer
12793 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012794 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012795 sizeof(halSendBeaconReq.sendBeaconParam),
12796 &pSendBuffer, &usDataOffset, &usSendSize))||
12797 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12798 {
12799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012800 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012801 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12802 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 }
12805
12806 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12807 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12808 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012809 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012810 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12811 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12812 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12813 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012815 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012816 /* usP2PIeOffset should be atleast greater than timIeOffset */
12817 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12818 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12819 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12820 {
12821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12822 "Invalid usP2PIeOffset %hu",
12823 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12824 WDI_ASSERT(0);
12825 return WDI_STATUS_E_FAILURE;
12826 }
12827
Jeff Johnsone7245742012-09-05 17:12:55 -070012828 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012829 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012830
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 wpalMemoryCopy( pSendBuffer+usDataOffset,
12832 &halSendBeaconReq.sendBeaconParam,
12833 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012834
12835 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012836 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012837
12838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012839 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012840 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012841 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12842 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012843}/*WDI_ProcessSendBeaconParamsReq*/
12844
12845/**
12846 @brief Process Update Beacon Params Request function (called when Main FSM
12847 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012848
12849 @param pWDICtx: pointer to the WLAN DAL context
12850 pEventData: pointer to the event information structure
12851
Jeff Johnson295189b2012-06-20 16:38:30 -070012852 @see
12853 @return Result of the function call
12854*/
12855WDI_Status
12856WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012857(
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 WDI_ControlBlockType* pWDICtx,
12859 WDI_EventInfoType* pEventData
12860)
12861{
12862 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12863 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 wpt_uint16 usDataOffset = 0;
12866 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012867 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12869
12870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 -------------------------------------------------------------------------*/
12873 if (( NULL == pEventData ) ||
12874 ( NULL == pEventData->pEventData) ||
12875 ( NULL == pEventData->pCBfnc))
12876 {
12877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 }
12882
Jeff Johnsone7245742012-09-05 17:12:55 -070012883 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012884 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12887 /*-----------------------------------------------------------------------
12888 Get message buffer
12889 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012890 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012891 sizeof(halUpdateProbeRspTmplParams),
12892 &pSendBuffer, &usDataOffset, &usSendSize))||
12893 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12894 {
12895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012896 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 }
12901
12902 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 WDI_MAC_ADDR_LEN);
12905
Jeff Johnsone7245742012-09-05 17:12:55 -070012906 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012907 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12908
12909 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12910 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012911 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012912
12913
12914 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12915 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12916 WDI_PROBE_REQ_BITMAP_IE_LEN);
12917
Jeff Johnsone7245742012-09-05 17:12:55 -070012918 wpalMemoryCopy( pSendBuffer+usDataOffset,
12919 &halUpdateProbeRspTmplParams,
12920 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012921
12922 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012923 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012924
12925 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012926 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012927 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012928 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12929 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12930 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012931}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12932
12933/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012934 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012936
12937 @param pWDICtx: pointer to the WLAN DAL context
12938 pEventData: pointer to the event information structure
12939
Jeff Johnson295189b2012-06-20 16:38:30 -070012940 @see
12941 @return Result of the function call
12942*/
12943WDI_Status
12944WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012945(
Jeff Johnson295189b2012-06-20 16:38:30 -070012946 WDI_ControlBlockType* pWDICtx,
12947 WDI_EventInfoType* pEventData
12948)
12949{
12950
12951 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12952 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12953
12954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012955 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012956 -------------------------------------------------------------------------*/
12957 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012958 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012960 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012961 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12962 {
12963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012964 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012967 }
12968
12969 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012970 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012971 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12972
12973 /*cache the wdi nv request message here if the the first fragment
12974 * To issue the request to HAL for the next fragment */
12975 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12976 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012977 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12978 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012979 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12980
12981 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12982 pWDICtx->pRspCBUserData = pEventData->pUserData;
12983 }
12984
12985 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12986}
12987
12988/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012989 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012991
12992 @param pWDICtx: pointer to the WLAN DAL context
12993 pEventData: pointer to the event information structure
12994
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 @see
12996 @return Result of the function call
12997*/
12998WDI_Status WDI_ProcessSetMaxTxPowerReq
12999(
13000 WDI_ControlBlockType* pWDICtx,
13001 WDI_EventInfoType* pEventData
13002)
13003{
13004 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13005 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013006 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013007 wpt_uint16 usDataOffset = 0;
13008 wpt_uint16 usSendSize = 0;
13009 tSetMaxTxPwrReq halSetMaxTxPower;
13010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13011
13012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013013 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013014 -------------------------------------------------------------------------*/
13015 if (( NULL == pEventData ) ||
13016 ( NULL == pEventData->pEventData ) ||
13017 ( NULL == pEventData->pCBfnc ))
13018 {
13019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013020 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013023 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013024 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013025 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013026 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013027 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13028
13029 /*-----------------------------------------------------------------------
13030 Get message buffer
13031 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013032if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13034 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013035 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013036)))
13037 {
13038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013039 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013043 }
13044
13045 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13046 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13047 WDI_MAC_ADDR_LEN);
13048
13049 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13050 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13051 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013052 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013053 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013054
13055 wpalMemoryCopy( pSendBuffer+usDataOffset,
13056 &halSetMaxTxPower.setMaxTxPwrParams,
13057 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013058
13059 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013061
13062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013063 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013064 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013065 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13066 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13067 WDI_SET_MAX_TX_POWER_RESP);
13068
Jeff Johnson295189b2012-06-20 16:38:30 -070013069}
13070
Arif Hussaina5ebce02013-08-09 15:09:58 -070013071/*
13072 @brief Process Set Max Tx Power Per Band Request function (called when Main
13073 FSM allows it)
13074
13075 @param pWDICtx: pointer to the WLAN DAL context
13076 pEventData: pointer to the event information structure
13077
13078 @see
13079 @return Result of the function call
13080*/
13081WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13082(
13083 WDI_ControlBlockType* pWDICtx,
13084 WDI_EventInfoType* pEventData
13085)
13086{
13087 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13088 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13089 wpt_uint8* pSendBuffer = NULL;
13090 wpt_uint16 usDataOffset = 0;
13091 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013092 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013093 WDI_Status rValue = WDI_STATUS_SUCCESS;
13094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13095
13096 /*-------------------------------------------------------------------------
13097 Sanity check
13098 -------------------------------------------------------------------------*/
13099 if (( NULL == pEventData ) ||
13100 ( NULL == pEventData->pEventData ) ||
13101 ( NULL == pEventData->pCBfnc ))
13102 {
13103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13104 "%s: Invalid parameters", __func__);
13105 WDI_ASSERT(0);
13106 return WDI_STATUS_E_FAILURE;
13107 }
13108 pwdiSetMaxTxPowerPerBandParams = \
13109 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13110
13111 wdiSetMaxTxPowerPerBandRspCb = \
13112 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13113
13114 /*-----------------------------------------------------------------------
13115 Get message buffer
13116 -----------------------------------------------------------------------*/
13117
13118 rValue = WDI_GetMessageBuffer(pWDICtx,
13119 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13120 sizeof(tSetMaxTxPwrPerBandParams),
13121 &pSendBuffer, &usDataOffset, &usSendSize);
13122
13123 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13124 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13125 {
13126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13127 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13128 pEventData, pwdiSetMaxTxPowerPerBandParams,
13129 wdiSetMaxTxPowerPerBandRspCb);
13130 WDI_ASSERT(0);
13131 return WDI_STATUS_E_FAILURE;
13132 }
13133
13134
Arif Hussainf8f080c2014-04-03 09:48:36 -070013135 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13136 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013137 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13138
Arif Hussainf8f080c2014-04-03 09:48:36 -070013139 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013140 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13141
13142 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13143 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13144
13145 /*-------------------------------------------------------------------------
13146 Send Set Max Tx Power Per Band Request to HAL
13147 -------------------------------------------------------------------------*/
13148 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13149 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13150 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13151}
13152
schang86c22c42013-03-13 18:41:24 -070013153/**
13154 @brief Process Set Tx Power Request function (called when Main
13155 FSM allows it)
13156
13157 @param pWDICtx: pointer to the WLAN DAL context
13158 pEventData: pointer to the event information structure
13159
13160 @see
13161 @return Result of the function call
13162*/
13163WDI_Status WDI_ProcessSetTxPowerReq
13164(
13165 WDI_ControlBlockType* pWDICtx,
13166 WDI_EventInfoType* pEventData
13167)
13168{
13169 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13170 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13171 wpt_uint8* pSendBuffer = NULL;
13172 wpt_uint16 usDataOffset = 0;
13173 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013174 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13176
13177 /*-------------------------------------------------------------------------
13178 Sanity check
13179 -------------------------------------------------------------------------*/
13180 if (( NULL == pEventData ) ||
13181 ( NULL == pEventData->pEventData ) ||
13182 ( NULL == pEventData->pCBfnc ))
13183 {
13184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13185 "%s: Invalid parameters", __func__);
13186 WDI_ASSERT(0);
13187 return WDI_STATUS_E_FAILURE;
13188 }
13189
13190 pwdiSetTxPowerParams =
13191 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13192 wdiSetTxPowerRspCb =
13193 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13194
13195 /*-----------------------------------------------------------------------
13196 Get message buffer
13197 -----------------------------------------------------------------------*/
13198 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13199 sizeof(tSetTxPwrReqParams),
13200 &pSendBuffer, &usDataOffset, &usSendSize))||
13201 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13202 )))
13203 {
13204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013205 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013206 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13207 WDI_ASSERT(0);
13208 return WDI_STATUS_E_FAILURE;
13209 }
13210
Leo Chang9a43db92013-03-25 17:39:58 -070013211 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13212 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13213 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013214
13215 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13216 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13217
13218 /*-------------------------------------------------------------------------
13219 Send Set Tx Power Request to HAL
13220 -------------------------------------------------------------------------*/
13221 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13222 wdiSetTxPowerRspCb, pEventData->pUserData,
13223 WDI_SET_TX_POWER_RESP);
13224}
Jeff Johnson295189b2012-06-20 16:38:30 -070013225
13226/**
13227 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13228 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013229
13230 @param pWDICtx: pointer to the WLAN DAL context
13231 pEventData: pointer to the event information structure
13232
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 @see
13234 @return Result of the function call
13235*/
13236WDI_Status
13237WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013238(
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 WDI_ControlBlockType* pWDICtx,
13240 WDI_EventInfoType* pEventData
13241)
13242{
13243 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13244 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 wpt_uint16 usDataOffset = 0;
13247 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013248 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13250
13251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013252 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 -------------------------------------------------------------------------*/
13254 if (( NULL == pEventData ) ||
13255 ( NULL == pEventData->pEventData) ||
13256 ( NULL == pEventData->pCBfnc))
13257 {
13258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013259 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 }
13263
Jeff Johnsone7245742012-09-05 17:12:55 -070013264 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013265 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013266 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013267 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13268 /*-----------------------------------------------------------------------
13269 Get message buffer
13270 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013271 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13272 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013273 sizeof(halSetP2PGONOAParams),
13274 &pSendBuffer, &usDataOffset, &usSendSize))||
13275 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13276 {
13277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013278 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 }
13283
Jeff Johnsone7245742012-09-05 17:12:55 -070013284 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013285 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013286 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013287 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13288 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013289 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013290 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013291 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013292 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013295 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013296 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13297
Jeff Johnsone7245742012-09-05 17:12:55 -070013298 wpalMemoryCopy( pSendBuffer+usDataOffset,
13299 &halSetP2PGONOAParams,
13300 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013301
13302 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013303 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013304
13305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013306 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013307 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013308 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13309 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13310 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013311}/*WDI_ProcessP2PGONOAReq*/
13312
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013313#ifdef FEATURE_WLAN_TDLS
13314
13315/**
13316 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13317 allows it)
13318
13319 @param pWDICtx: pointer to the WLAN DAL context
13320 pEventData: pointer to the event information structure
13321
13322 @see
13323 @return Result of the function call
13324*/
13325WDI_Status
13326WDI_ProcessTdlsLinkEstablishReq
13327(
13328 WDI_ControlBlockType* pWDICtx,
13329 WDI_EventInfoType* pEventData
13330)
13331{
13332 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13333 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13334 wpt_uint8* pSendBuffer = NULL;
13335 wpt_uint16 usDataOffset = 0;
13336 wpt_uint16 usSendSize = 0;
13337
13338 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13340
13341 /*-------------------------------------------------------------------------
13342 Sanity check
13343 -------------------------------------------------------------------------*/
13344 if (( NULL == pEventData ) ||
13345 ( NULL == pEventData->pEventData) ||
13346 ( NULL == pEventData->pCBfnc))
13347 {
13348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13349 "%s: Invalid parameters", __func__);
13350 WDI_ASSERT(0);
13351 return WDI_STATUS_E_FAILURE;
13352 }
13353 pwdiTDLSLinkEstablishReqParams =
13354 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13355 wdiTDLSLinkEstablishReqRspCb =
13356 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13357
13358
13359 /*-----------------------------------------------------------------------
13360 Get message buffer
13361 -----------------------------------------------------------------------*/
13362 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13363 WDI_TDLS_LINK_ESTABLISH_REQ,
13364 sizeof(halSetTDLSLinkEstablishParams),
13365 &pSendBuffer, &usDataOffset, &usSendSize))||
13366 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13367 {
13368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013369 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013370 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13371 WDI_ASSERT(0);
13372 return WDI_STATUS_E_FAILURE;
13373 }
13374
13375 halSetTDLSLinkEstablishParams.staIdx =
13376 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13377 halSetTDLSLinkEstablishParams.bIsResponder =
13378 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13379 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13380 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13381 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13382 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13383 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13384 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13385 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13386 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13387 halSetTDLSLinkEstablishParams.aAck = 0;
13388 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13389 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13390 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013391 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13392 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13393
13394 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13395 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13396 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13397 halSetTDLSLinkEstablishParams.validChannelsLen =
13398 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13399
13400 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13401 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13402 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13403 halSetTDLSLinkEstablishParams.validOperClassesLen =
13404 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013405
13406 wpalMemoryCopy( pSendBuffer+usDataOffset,
13407 &halSetTDLSLinkEstablishParams,
13408 sizeof(halSetTDLSLinkEstablishParams));
13409
13410 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13411 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13412
13413 /*-------------------------------------------------------------------------
13414 Send Update Probe Resp Template Request to HAL
13415 -------------------------------------------------------------------------*/
13416 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13417 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13418 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13419 return 0;
13420}/*WDI_ProcessTdlsLinkEstablishReq*/
13421
13422
13423#endif
13424
Jeff Johnson295189b2012-06-20 16:38:30 -070013425
13426
13427/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013428 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013429 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013430 @param None
13431
13432 @see
13433 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013434*/
13435void
13436WDI_SetPowerStateCb
13437(
13438 wpt_status status,
13439 unsigned int dxePhyAddr,
13440 void *pContext
13441)
13442{
13443 wpt_status wptStatus;
13444 WDI_ControlBlockType *pCB = NULL;
13445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013446 /*
13447 * Trigger the event to bring the Enter BMPS req function to come
13448 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013449*/
13450 if( NULL != pContext )
13451 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013452 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013453 }
13454 else
13455 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013456 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013457 pCB = &gWDICb;
13458 }
Mihir Shetea4306052014-03-25 00:02:54 +053013459
13460 if(eWLAN_PAL_STATUS_SUCCESS == status )
13461 {
13462 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13463 }
13464 else
13465 {
13466 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13467 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013468 pCB->dxePhyAddr = dxePhyAddr;
13469 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13470 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13471 {
13472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13473 "Failed to set an event");
13474
Jeff Johnsone7245742012-09-05 17:12:55 -070013475 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013476 }
13477 return;
13478}
13479
13480
13481/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013482 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013483 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013484
13485 @param pWDICtx: pointer to the WLAN DAL context
13486 pEventData: pointer to the event information structure
13487
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 @see
13489 @return Result of the function call
13490*/
13491WDI_Status
13492WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013493(
Jeff Johnson295189b2012-06-20 16:38:30 -070013494 WDI_ControlBlockType* pWDICtx,
13495 WDI_EventInfoType* pEventData
13496)
13497{
Jeff Johnson43971f52012-07-17 12:26:56 -070013498 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013499 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013501 wpt_uint16 usDataOffset = 0;
13502 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013503 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13505
13506 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013507 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013508 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013509 if ((NULL == pEventData ) ||
13510 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13511 (NULL == (pwdiEnterImpsReqParams =
13512 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013513 {
13514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013516 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013517 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 }
13519
13520 /*-----------------------------------------------------------------------
13521 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013522 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013524 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013525 0,
13526 &pSendBuffer, &usDataOffset, &usSendSize))||
13527 ( usSendSize < (usDataOffset )))
13528 {
13529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013530 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013531 pEventData, wdiEnterImpsRspCb);
13532 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013533 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 }
13535
13536 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013537 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13538 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 {
13540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13541 "WDI Init failed to reset an event");
13542
Jeff Johnsone7245742012-09-05 17:12:55 -070013543 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013544 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013545 }
13546
13547 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013548 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13549 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013551 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013552 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013553 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013554 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013555
13556 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013557 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013559 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13560 WDI_SET_POWER_STATE_TIMEOUT);
13561 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013562 {
13563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13564 "WDI Init failed to wait on an event");
13565
Jeff Johnsone7245742012-09-05 17:12:55 -070013566 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013567 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013568 }
13569
Mihir Shetea4306052014-03-25 00:02:54 +053013570 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13571 {
13572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13573 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13574
13575 goto fail;
13576 }
13577
13578 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13579 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013581 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013582 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013583 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13584 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013585
13586fail:
13587 // Release the message buffer so we don't leak
13588 wpalMemoryFree(pSendBuffer);
13589
13590failRequest:
13591 //WDA should have failure check to avoid the memory leak
13592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013593}/*WDI_ProcessEnterImpsReq*/
13594
13595/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013596 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013597 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013598
13599 @param pWDICtx: pointer to the WLAN DAL context
13600 pEventData: pointer to the event information structure
13601
Jeff Johnson295189b2012-06-20 16:38:30 -070013602 @see
13603 @return Result of the function call
13604*/
13605WDI_Status
13606WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013607(
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 WDI_ControlBlockType* pWDICtx,
13609 WDI_EventInfoType* pEventData
13610)
13611{
13612 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013613 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013614 wpt_uint16 usDataOffset = 0;
13615 wpt_uint16 usSendSize = 0;
13616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13617
13618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013620 -------------------------------------------------------------------------*/
13621 if (( NULL == pEventData ) ||
13622 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13623 {
13624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013625 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013628 }
13629
13630 /*-----------------------------------------------------------------------
13631 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013633 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013634 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013635 0,
13636 &pSendBuffer, &usDataOffset, &usSendSize))||
13637 ( usSendSize < (usDataOffset )))
13638 {
13639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013640 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013641 pEventData, wdiExitImpsRspCb);
13642 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013643 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013644 }
13645
13646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013647 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013648 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013649 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13650 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013651}/*WDI_ProcessExitImpsReq*/
13652
13653/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013654 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013655 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013656
13657 @param pWDICtx: pointer to the WLAN DAL context
13658 pEventData: pointer to the event information structure
13659
Jeff Johnson295189b2012-06-20 16:38:30 -070013660 @see
13661 @return Result of the function call
13662*/
13663WDI_Status
13664WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013665(
Jeff Johnson295189b2012-06-20 16:38:30 -070013666 WDI_ControlBlockType* pWDICtx,
13667 WDI_EventInfoType* pEventData
13668)
13669{
13670 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13671 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013672 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013673 wpt_uint16 usDataOffset = 0;
13674 wpt_uint16 usSendSize = 0;
13675 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013676 wpt_status wptStatus;
13677
Jeff Johnson295189b2012-06-20 16:38:30 -070013678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13679
13680 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013681 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013682 -------------------------------------------------------------------------*/
13683 if (( NULL == pEventData ) ||
13684 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13685 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13686 {
13687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013688 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013689 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013690 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013691 }
13692
13693 /*-----------------------------------------------------------------------
13694 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013695 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013697 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013698 sizeof(enterBmpsReq),
13699 &pSendBuffer, &usDataOffset, &usSendSize))||
13700 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13701 {
13702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013703 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013704 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13705 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013706 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013707 }
13708
13709 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013710 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13711 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013712 {
13713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13714 "WDI Init failed to reset an event");
13715
Jeff Johnsone7245742012-09-05 17:12:55 -070013716 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013717 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013718 }
13719
13720 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013721 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13722 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13723 {
13724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013725 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013726 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013727 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013728 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013729
13730/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013731 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013732 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013733 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13734 WDI_SET_POWER_STATE_TIMEOUT);
13735 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013736 {
13737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13738 "WDI Init failed to wait on an event");
13739
Jeff Johnsone7245742012-09-05 17:12:55 -070013740 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013741 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013742 }
13743
13744 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13745
13746 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13747 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13748 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13749 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13750
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080013751 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070013752 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13753 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13754 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13755
13756 wpalMemoryCopy( pSendBuffer+usDataOffset,
13757 &enterBmpsReq,
13758 sizeof(enterBmpsReq));
13759
13760 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013761 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013762
13763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013764 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013765 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13767 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013768
13769fail:
13770 // Release the message buffer so we don't leak
13771 wpalMemoryFree(pSendBuffer);
13772
13773failRequest:
13774 //WDA should have failure check to avoid the memory leak
13775 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013776}/*WDI_ProcessEnterBmpsReq*/
13777
13778/**
13779 @brief Process Exit BMPS Request function (called when Main FSM
13780 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013781
13782 @param pWDICtx: pointer to the WLAN DAL context
13783 pEventData: pointer to the event information structure
13784
Jeff Johnson295189b2012-06-20 16:38:30 -070013785 @see
13786 @return Result of the function call
13787*/
13788WDI_Status
13789WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013790(
Jeff Johnson295189b2012-06-20 16:38:30 -070013791 WDI_ControlBlockType* pWDICtx,
13792 WDI_EventInfoType* pEventData
13793)
13794{
13795 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13796 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013797 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 wpt_uint16 usDataOffset = 0;
13799 wpt_uint16 usSendSize = 0;
13800 tHalExitBmpsReqParams exitBmpsReq;
13801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13802
13803 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013804 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013805 -------------------------------------------------------------------------*/
13806 if (( NULL == pEventData ) ||
13807 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13808 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13809 {
13810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013814 }
13815
13816 /*-----------------------------------------------------------------------
13817 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013818 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013819 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013820 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013821 sizeof(exitBmpsReq),
13822 &pSendBuffer, &usDataOffset, &usSendSize))||
13823 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13824 {
13825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013826 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13828 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013830 }
13831 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13832
Jeff Johnsone7245742012-09-05 17:12:55 -070013833 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13834
Jeff Johnson295189b2012-06-20 16:38:30 -070013835 wpalMemoryCopy( pSendBuffer+usDataOffset,
13836 &exitBmpsReq,
13837 sizeof(exitBmpsReq));
13838
13839 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013840 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013841
13842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013843 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013845 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13846 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013847}/*WDI_ProcessExitBmpsReq*/
13848
13849/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013850 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013851 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013852
13853 @param pWDICtx: pointer to the WLAN DAL context
13854 pEventData: pointer to the event information structure
13855
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 @see
13857 @return Result of the function call
13858*/
13859WDI_Status
13860WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013861(
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 WDI_ControlBlockType* pWDICtx,
13863 WDI_EventInfoType* pEventData
13864)
13865{
13866 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13867 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013868 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013869 wpt_uint16 usDataOffset = 0;
13870 wpt_uint16 usSendSize = 0;
13871 tUapsdReqParams enterUapsdReq;
13872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13873
13874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013875 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013876 -------------------------------------------------------------------------*/
13877 if (( NULL == pEventData ) ||
13878 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13879 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13880 {
13881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013882 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013883 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013885 }
13886
13887 /*-----------------------------------------------------------------------
13888 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013891 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013892 sizeof(enterUapsdReq),
13893 &pSendBuffer, &usDataOffset, &usSendSize))||
13894 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13895 {
13896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013897 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013898 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013901 }
13902
13903 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13904 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13905 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13906 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13907 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13908 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13909 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13910 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013911 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013912
Jeff Johnsone7245742012-09-05 17:12:55 -070013913 wpalMemoryCopy( pSendBuffer+usDataOffset,
13914 &enterUapsdReq,
13915 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013916
13917 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013919
13920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013921 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013922 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013923 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13924 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013925}/*WDI_ProcessEnterUapsdReq*/
13926
13927/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013928 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013929 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013930
13931 @param pWDICtx: pointer to the WLAN DAL context
13932 pEventData: pointer to the event information structure
13933
Jeff Johnson295189b2012-06-20 16:38:30 -070013934 @see
13935 @return Result of the function call
13936*/
13937WDI_Status
13938WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013939(
Jeff Johnson295189b2012-06-20 16:38:30 -070013940 WDI_ControlBlockType* pWDICtx,
13941 WDI_EventInfoType* pEventData
13942)
13943{
13944 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013945 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013946 wpt_uint16 usDataOffset = 0;
13947 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013948 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13949 wpt_uint8 bssIdx = 0;
13950
Jeff Johnson295189b2012-06-20 16:38:30 -070013951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13952
13953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013955 -------------------------------------------------------------------------*/
13956 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013957 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013958 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13959 {
13960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013961 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 }
13965
13966 /*-----------------------------------------------------------------------
13967 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013968 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013970 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013971 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013973 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013974 {
13975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013976 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013977 pEventData, wdiExitUapsdRspCb);
13978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 }
13981
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013982 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13983
13984 wpalMemoryCopy( pSendBuffer+usDataOffset,
13985 &bssIdx,
13986 sizeof(wpt_uint8));
13987
13988 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13989 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13990
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013992 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013994 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13995 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013996}/*WDI_ProcessExitUapsdReq*/
13997
13998/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014001
14002 @param pWDICtx: pointer to the WLAN DAL context
14003 pEventData: pointer to the event information structure
14004
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 @see
14006 @return Result of the function call
14007*/
14008WDI_Status
14009WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014010(
Jeff Johnson295189b2012-06-20 16:38:30 -070014011 WDI_ControlBlockType* pWDICtx,
14012 WDI_EventInfoType* pEventData
14013)
14014{
14015 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14016 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014017 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014018 wpt_uint16 usDataOffset = 0;
14019 wpt_uint16 usSendSize = 0;
14020 tUapsdInfo uapsdAcParamsReq;
14021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14022
14023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014024 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 -------------------------------------------------------------------------*/
14026 if (( NULL == pEventData ) ||
14027 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14028 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14029 {
14030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014031 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014034 }
14035
14036 /*-----------------------------------------------------------------------
14037 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014038 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014039 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014040 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014041 sizeof(uapsdAcParamsReq),
14042 &pSendBuffer, &usDataOffset, &usSendSize))||
14043 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14044 {
14045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014046 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014047 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14048 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014050 }
14051
14052 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14053 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14054 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14055 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14056 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14057 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14058
Jeff Johnsone7245742012-09-05 17:12:55 -070014059 wpalMemoryCopy( pSendBuffer+usDataOffset,
14060 &uapsdAcParamsReq,
14061 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014062
14063 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014064 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014065
14066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014067 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014068 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014069 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14070 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014071}/*WDI_ProcessSetUapsdAcParamsReq*/
14072
14073/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014074 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014075 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014076
14077 @param pWDICtx: pointer to the WLAN DAL context
14078 pEventData: pointer to the event information structure
14079
Jeff Johnson295189b2012-06-20 16:38:30 -070014080 @see
14081 @return Result of the function call
14082*/
14083WDI_Status
14084WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014085(
Jeff Johnson295189b2012-06-20 16:38:30 -070014086 WDI_ControlBlockType* pWDICtx,
14087 WDI_EventInfoType* pEventData
14088)
14089{
14090 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14091 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014092 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 wpt_uint16 usDataOffset = 0;
14094 wpt_uint16 usSendSize = 0;
14095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14096
14097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014098 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 -------------------------------------------------------------------------*/
14100 if (( NULL == pEventData ) ||
14101 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14102 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14103 {
14104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014105 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014106 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014107 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014108 }
14109
14110 /*-----------------------------------------------------------------------
14111 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014112 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014113 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014114 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014115 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14116 &pSendBuffer, &usDataOffset, &usSendSize))||
14117 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14118 {
14119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014120 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014121 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 }
14125
Jeff Johnsone7245742012-09-05 17:12:55 -070014126 wpalMemoryCopy( pSendBuffer+usDataOffset,
14127 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14128 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014129
14130 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014131 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014132
14133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014134 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014135 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014136 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14137 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014138}/*WDI_ProcessUpdateUapsdParamsReq*/
14139
14140/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014143
14144 @param pWDICtx: pointer to the WLAN DAL context
14145 pEventData: pointer to the event information structure
14146
Jeff Johnson295189b2012-06-20 16:38:30 -070014147 @see
14148 @return Result of the function call
14149*/
14150WDI_Status
14151WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014152(
Jeff Johnson295189b2012-06-20 16:38:30 -070014153 WDI_ControlBlockType* pWDICtx,
14154 WDI_EventInfoType* pEventData
14155)
14156{
14157 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14158 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014159 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 wpt_uint16 usDataOffset = 0;
14161 wpt_uint16 usSendSize = 0;
14162 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14163
14164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14165
14166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014168 -------------------------------------------------------------------------*/
14169 if (( NULL == pEventData ) ||
14170 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14171 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14172 {
14173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014174 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014177 }
14178
14179 /*-----------------------------------------------------------------------
14180 Get message buffer
14181 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014182 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 sizeof(halRxpFilterParams),
14184 &pSendBuffer, &usDataOffset, &usSendSize))||
14185 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14186 {
14187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014188 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014189 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 }
14193
Jeff Johnsone7245742012-09-05 17:12:55 -070014194 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014195 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014196 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014197 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14198
Jeff Johnsone7245742012-09-05 17:12:55 -070014199 wpalMemoryCopy( pSendBuffer+usDataOffset,
14200 &halRxpFilterParams,
14201 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014202
14203 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014204 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014205
14206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014207 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014208 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014209 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14210 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014211}/*WDI_ProcessConfigureRxpFilterReq*/
14212
14213/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014214 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014215 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014216
14217 @param pWDICtx: pointer to the WLAN DAL context
14218 pEventData: pointer to the event information structure
14219
Jeff Johnson295189b2012-06-20 16:38:30 -070014220 @see
14221 @return Result of the function call
14222*/
14223WDI_Status
14224WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014225(
Jeff Johnson295189b2012-06-20 16:38:30 -070014226 WDI_ControlBlockType* pWDICtx,
14227 WDI_EventInfoType* pEventData
14228)
14229{
14230 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14231 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014232 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014233 wpt_uint16 usDataOffset = 0;
14234 wpt_uint16 usSendSize = 0;
14235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14236
14237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014238 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014239 -------------------------------------------------------------------------*/
14240 if (( NULL == pEventData ) ||
14241 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14242 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14243 {
14244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014245 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014248 }
14249
14250 /*-----------------------------------------------------------------------
14251 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014252 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014254 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014255 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14256 &pSendBuffer, &usDataOffset, &usSendSize))||
14257 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14258 {
14259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014260 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014261 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014264 }
14265
Jeff Johnsone7245742012-09-05 17:12:55 -070014266 wpalMemoryCopy( pSendBuffer+usDataOffset,
14267 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14268 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14269 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14270 &pwdiBeaconFilterParams->aFilters[0],
14271 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014272
14273 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014274 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014275
14276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014277 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014278 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014279 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14280 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014281}/*WDI_ProcessSetBeaconFilterReq*/
14282
14283/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014284 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014286
14287 @param pWDICtx: pointer to the WLAN DAL context
14288 pEventData: pointer to the event information structure
14289
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 @see
14291 @return Result of the function call
14292*/
14293WDI_Status
14294WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014295(
Jeff Johnson295189b2012-06-20 16:38:30 -070014296 WDI_ControlBlockType* pWDICtx,
14297 WDI_EventInfoType* pEventData
14298)
14299{
14300 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14301 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014302 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 wpt_uint16 usDataOffset = 0;
14304 wpt_uint16 usSendSize = 0;
14305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14306
14307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014308 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014309 -------------------------------------------------------------------------*/
14310 if (( NULL == pEventData ) ||
14311 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14312 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14313 {
14314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014315 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014318 }
14319
14320 /*-----------------------------------------------------------------------
14321 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014322 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014323 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014325 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14326 &pSendBuffer, &usDataOffset, &usSendSize))||
14327 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14328 {
14329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014330 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014331 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014334 }
14335
Jeff Johnsone7245742012-09-05 17:12:55 -070014336 wpalMemoryCopy( pSendBuffer+usDataOffset,
14337 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14338 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014339
14340 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014341 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014342
14343 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014344 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014346 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14347 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014348}
14349
14350/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014351 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014353
14354 @param pWDICtx: pointer to the WLAN DAL context
14355 pEventData: pointer to the event information structure
14356
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 @see
14358 @return Result of the function call
14359*/
14360WDI_Status
14361WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014362(
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 WDI_ControlBlockType* pWDICtx,
14364 WDI_EventInfoType* pEventData
14365)
14366{
14367 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14368 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014369 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 wpt_uint16 usDataOffset = 0;
14371 wpt_uint16 usSendSize = 0;
14372 tHalRSSIThresholds rssiThresholdsReq;
14373 WDI_Status ret_status = 0;
14374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14375
14376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014378 -------------------------------------------------------------------------*/
14379 if (( NULL == pEventData ) ||
14380 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14381 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14382 {
14383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014387 }
14388
14389 /*-----------------------------------------------------------------------
14390 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014391 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014392 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014393 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014394 sizeof(rssiThresholdsReq),
14395 &pSendBuffer, &usDataOffset, &usSendSize))||
14396 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14397 {
14398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014399 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014400 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014403 }
14404
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014406 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014409 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014411 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014412 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014415 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14425
Jeff Johnsone7245742012-09-05 17:12:55 -070014426 wpalMemoryCopy( pSendBuffer+usDataOffset,
14427 &rssiThresholdsReq,
14428 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014429
14430 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014431 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014432
14433 /*-------------------------------------------------------------------------
14434 Send Set threshold req to HAL
14435 -------------------------------------------------------------------------*/
14436 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14437 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14438 {
14439 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14440 // req. Then as a result of processing the threshold cross ind, we trigger
14441 // a Set threshold req, then we need to indicate to WDI that it needs to
14442 // go to busy state as a result of the indication as we sent a req in the
14443 // same WDI context.
14444 // Hence expected state transition is to busy.
14445 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14446 }
14447
14448 return ret_status;
14449}
14450
14451/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014452 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014454
14455 @param pWDICtx: pointer to the WLAN DAL context
14456 pEventData: pointer to the event information structure
14457
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 @see
14459 @return Result of the function call
14460*/
14461WDI_Status
14462WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014463(
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 WDI_ControlBlockType* pWDICtx,
14465 WDI_EventInfoType* pEventData
14466)
14467{
14468 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14469 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014470 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 wpt_uint16 usDataOffset = 0;
14472 wpt_uint16 usSendSize = 0;
14473 tHalHostOffloadReq hostOffloadParams;
14474 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014475 wpt_uint8 ucCurrentBSSSesIdx = 0;
14476 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014477
14478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14479
14480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014482 -------------------------------------------------------------------------*/
14483 if (( NULL == pEventData ) ||
14484 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14485 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14486 {
14487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014490 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 }
14492
14493 /*-----------------------------------------------------------------------
14494 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014495 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014496 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014497 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14499 &pSendBuffer, &usDataOffset, &usSendSize))||
14500 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14501 {
14502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014503 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014504 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14505 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014506 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014507 }
14508
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014509 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14510 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14511 &pBSSSes);
14512 if ( NULL == pBSSSes )
14513 {
14514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014515 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14516 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014517 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014518 }
14519
Jeff Johnson295189b2012-06-20 16:38:30 -070014520 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14521 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014522
Jeff Johnson295189b2012-06-20 16:38:30 -070014523 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14524 {
14525 // ARP Offload
14526 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14527 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14528 4);
14529 }
14530 else
14531 {
14532 // NS Offload
14533 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14534 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14535 16);
14536
14537#ifdef WLAN_NS_OFFLOAD
14538 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14539 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14540 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14541 16);
14542 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14543 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14544 16);
14545 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14546 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14547 16);
14548 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14549 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14550 16);
14551 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14552 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14553 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014554 nsOffloadParams.srcIPv6AddrValid =
14555 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14556
14557 nsOffloadParams.targetIPv6Addr1Valid =
14558 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14559
14560 nsOffloadParams.targetIPv6Addr2Valid =
14561 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14562
14563 nsOffloadParams.slotIndex =
14564 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014565
Jeff Johnson295189b2012-06-20 16:38:30 -070014566#endif // WLAN_NS_OFFLOAD
14567 }
14568
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014569 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14570
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 // copy hostOffloadParams into pSendBuffer
14572 wpalMemoryCopy( pSendBuffer+usDataOffset,
14573 &hostOffloadParams,
14574 sizeof(hostOffloadParams));
14575
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014576 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014577 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014578 // copy nsOffloadParams into pSendBuffer
14579 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 &nsOffloadParams,
14581 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014582 }
14583 else
14584 {
14585#ifdef WLAN_NS_OFFLOAD
14586 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14587 {
14588 // copy nsOffloadParams into pSendBuffer
14589 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14590 &nsOffloadParams,
14591 sizeof(nsOffloadParams));
14592 }
14593#endif
14594 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014595
14596 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014597 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014598
14599 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014600 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014601 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014602 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14603 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014604
14605fail:
14606 // Release the message buffer so we don't leak
14607 wpalMemoryFree(pSendBuffer);
14608
14609failRequest:
14610 //WDA should have failure check to avoid the memory leak
14611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014612}/*WDI_ProcessHostOffloadReq*/
14613
14614/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014615 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014617
14618 @param pWDICtx: pointer to the WLAN DAL context
14619 pEventData: pointer to the event information structure
14620
Jeff Johnson295189b2012-06-20 16:38:30 -070014621 @see
14622 @return Result of the function call
14623*/
14624WDI_Status
14625WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014626(
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 WDI_ControlBlockType* pWDICtx,
14628 WDI_EventInfoType* pEventData
14629)
14630{
14631 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14632 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014633 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014634 wpt_uint16 usDataOffset = 0;
14635 wpt_uint16 usSendSize = 0;
14636 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014637 wpt_uint8 ucCurrentBSSSesIdx = 0;
14638 WDI_BSSSessionType* pBSSSes = NULL;
14639
Jeff Johnson295189b2012-06-20 16:38:30 -070014640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14641
14642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014643 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014644 -------------------------------------------------------------------------*/
14645 if (( NULL == pEventData ) ||
14646 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14647 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14648 {
14649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14650 "Invalid parameters in Keep Alive req");
14651 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014652 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014653 }
14654
14655 /*-----------------------------------------------------------------------
14656 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014657 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014658 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014659 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014660 sizeof(keepAliveReq),
14661 &pSendBuffer, &usDataOffset, &usSendSize))||
14662 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14663 {
14664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014665 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14667 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014668 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 }
14670
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014671 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14672 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14673 &pBSSSes);
14674 if ( NULL == pBSSSes )
14675 {
14676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014677 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014678 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014679 }
14680
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14682 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14683
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014684 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014685
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14687 {
14688 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14689 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14690 HAL_IPV4_ADDR_LEN);
14691 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14692 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 wpalMemoryCopy(keepAliveReq.destMacAddr,
14695 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14696 HAL_MAC_ADDR_LEN);
14697 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014698
14699 wpalMemoryCopy( pSendBuffer+usDataOffset,
14700 &keepAliveReq,
14701 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014702
14703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014704 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014705
14706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014707 "Process keep alive req time period %d",
14708 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014709
14710 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014711 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014712
14713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14714 "Sending keep alive req to HAL");
14715
14716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014719 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14720 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014721
14722fail:
14723 // Release the message buffer so we don't leak
14724 wpalMemoryFree(pSendBuffer);
14725
14726failRequest:
14727 //WDA should have failure check to avoid the memory leak
14728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014729}/*WDI_ProcessKeepAliveReq*/
14730
14731
14732/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014735
14736 @param pWDICtx: pointer to the WLAN DAL context
14737 pEventData: pointer to the event information structure
14738
Jeff Johnson295189b2012-06-20 16:38:30 -070014739 @see
14740 @return Result of the function call
14741*/
14742WDI_Status
14743WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014744(
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 WDI_ControlBlockType* pWDICtx,
14746 WDI_EventInfoType* pEventData
14747)
14748{
14749 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14750 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 wpt_uint16 usDataOffset = 0;
14753 wpt_uint16 usSendSize = 0;
14754 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014755 wpt_uint8 ucCurrentBSSSesIdx = 0;
14756 WDI_BSSSessionType* pBSSSes = NULL;
14757
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14759
14760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014761 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014762 -------------------------------------------------------------------------*/
14763 if (( NULL == pEventData ) ||
14764 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14765 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14766 {
14767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014770 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 }
14772
14773 /*-----------------------------------------------------------------------
14774 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014775 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014776 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014777 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 sizeof(wowlAddBcPtrnReq),
14779 &pSendBuffer, &usDataOffset, &usSendSize))||
14780 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14781 {
14782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014783 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14785 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014786 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 }
14788
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014789 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14790 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14791 &pBSSSes);
14792 if ( NULL == pBSSSes )
14793 {
14794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014795 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014796 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014797 }
14798
Jeff Johnsone7245742012-09-05 17:12:55 -070014799 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014801 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014802 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014803 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014804 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014805 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014806 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14807
14808 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14809 {
14810 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14811 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14812 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14813 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14814 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14815 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14816 }
14817 else
14818 {
14819 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14820 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14821 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14822 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14823 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14824 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14825
14826 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14827 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14828 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14829 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14830 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14831 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14832 }
14833
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014834 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14835
Jeff Johnson295189b2012-06-20 16:38:30 -070014836 wpalMemoryCopy( pSendBuffer+usDataOffset,
14837 &wowlAddBcPtrnReq,
14838 sizeof(wowlAddBcPtrnReq));
14839
14840 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014841 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014842
14843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014844 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014846 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14847 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014848fail:
14849 // Release the message buffer so we don't leak
14850 wpalMemoryFree(pSendBuffer);
14851
14852failRequest:
14853 //WDA should have failure check to avoid the memory leak
14854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014855}/*WDI_ProcessWowlAddBcPtrnReq*/
14856
14857/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014858 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014860
14861 @param pWDICtx: pointer to the WLAN DAL context
14862 pEventData: pointer to the event information structure
14863
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 @see
14865 @return Result of the function call
14866*/
14867WDI_Status
14868WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014869(
Jeff Johnson295189b2012-06-20 16:38:30 -070014870 WDI_ControlBlockType* pWDICtx,
14871 WDI_EventInfoType* pEventData
14872)
14873{
14874 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14875 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014876 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014877 wpt_uint16 usDataOffset = 0;
14878 wpt_uint16 usSendSize = 0;
14879 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014880 wpt_uint8 ucCurrentBSSSesIdx = 0;
14881 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14883
14884 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 -------------------------------------------------------------------------*/
14887 if (( NULL == pEventData ) ||
14888 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14889 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14890 {
14891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014893 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014894 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 }
14896
14897 /*-----------------------------------------------------------------------
14898 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014901 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 sizeof(wowlDelBcPtrnReq),
14903 &pSendBuffer, &usDataOffset, &usSendSize))||
14904 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14905 {
14906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014907 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14909 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014910 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014911 }
14912
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014913 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14914 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14915 &pBSSSes);
14916 if ( NULL == pBSSSes )
14917 {
14918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014919 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014920 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014921 }
14922
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014925
14926 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14927
Jeff Johnsone7245742012-09-05 17:12:55 -070014928 wpalMemoryCopy( pSendBuffer+usDataOffset,
14929 &wowlDelBcPtrnReq,
14930 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014931
14932 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014933 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014934
14935 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014936 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14939 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014940
14941fail:
14942 // Release the message buffer so we don't leak
14943 wpalMemoryFree(pSendBuffer);
14944
14945failRequest:
14946 //WDA should have failure check to avoid the memory leak
14947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014948}/*WDI_ProcessWowlDelBcPtrnReq*/
14949
14950/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014951 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014953
14954 @param pWDICtx: pointer to the WLAN DAL context
14955 pEventData: pointer to the event information structure
14956
Jeff Johnson295189b2012-06-20 16:38:30 -070014957 @see
14958 @return Result of the function call
14959*/
14960WDI_Status
14961WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014962(
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 WDI_ControlBlockType* pWDICtx,
14964 WDI_EventInfoType* pEventData
14965)
14966{
14967 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14968 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014969 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014970 wpt_uint16 usDataOffset = 0;
14971 wpt_uint16 usSendSize = 0;
14972 tHalWowlEnterParams wowlEnterReq;
14973 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14974
14975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014976 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 -------------------------------------------------------------------------*/
14978 if (( NULL == pEventData ) ||
14979 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14980 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14981 {
14982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014983 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014986 }
14987
14988 /*-----------------------------------------------------------------------
14989 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014990 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014991 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014992 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014993 sizeof(wowlEnterReq),
14994 &pSendBuffer, &usDataOffset, &usSendSize))||
14995 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14996 {
14997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014998 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014999 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15000 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015002 }
15003
Kumar Anandaca924e2013-07-22 14:35:34 -070015004 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15005
Jeff Johnsone7245742012-09-05 17:12:55 -070015006 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015007 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015008 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015009 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015010 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015011 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015012 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015013 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015014 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015015 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015016 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015018 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015020 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015021 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15022
15023#ifdef WLAN_WAKEUP_EVENTS
15024 wowlEnterReq.ucWoWEAPIDRequestEnable =
15025 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15026
15027 wowlEnterReq.ucWoWEAPOL4WayEnable =
15028 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15029
15030 wowlEnterReq.ucWowNetScanOffloadMatch =
15031 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15032
15033 wowlEnterReq.ucWowGTKRekeyError =
15034 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15035
15036 wowlEnterReq.ucWoWBSSConnLoss =
15037 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15038#endif // WLAN_WAKEUP_EVENTS
15039
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015040 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15041
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15043 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15044 sizeof(tSirMacAddr));
15045
Jeff Johnsone7245742012-09-05 17:12:55 -070015046 wpalMemoryCopy( pSendBuffer+usDataOffset,
15047 &wowlEnterReq,
15048 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015049
15050 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015051 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015052
15053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015054 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015055 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015056 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15057 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015058}/*WDI_ProcessWowlEnterReq*/
15059
15060/**
15061 @brief Process Wowl exit Request function (called when Main FSM
15062 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015063
15064 @param pWDICtx: pointer to the WLAN DAL context
15065 pEventData: pointer to the event information structure
15066
Jeff Johnson295189b2012-06-20 16:38:30 -070015067 @see
15068 @return Result of the function call
15069*/
15070WDI_Status
15071WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015072(
Jeff Johnson295189b2012-06-20 16:38:30 -070015073 WDI_ControlBlockType* pWDICtx,
15074 WDI_EventInfoType* pEventData
15075)
15076{
15077 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015078 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015079 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 wpt_uint16 usDataOffset = 0;
15081 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015082 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15084
15085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015086 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015087 -------------------------------------------------------------------------*/
15088 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015089 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15091 {
15092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015096 }
15097
15098 /*-----------------------------------------------------------------------
15099 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015100 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015101 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015102 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015103 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015104 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015105 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015106 {
15107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015108 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015109 pEventData, wdiWowlExitCb);
15110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015112 }
15113
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015114 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15115
15116 wpalMemoryCopy( pSendBuffer+usDataOffset,
15117 &wowlExitparams,
15118 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015120 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015121 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015122 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15123 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015124}/*WDI_ProcessWowlExitReq*/
15125
15126/**
15127 @brief Process Configure Apps Cpu Wakeup State Request function
15128 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015129
15130 @param pWDICtx: pointer to the WLAN DAL context
15131 pEventData: pointer to the event information structure
15132
Jeff Johnson295189b2012-06-20 16:38:30 -070015133 @see
15134 @return Result of the function call
15135*/
15136WDI_Status
15137WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015138(
Jeff Johnson295189b2012-06-20 16:38:30 -070015139 WDI_ControlBlockType* pWDICtx,
15140 WDI_EventInfoType* pEventData
15141)
15142{
15143 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15144 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015145 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015146 wpt_uint16 usDataOffset = 0;
15147 wpt_uint16 usSendSize = 0;
15148 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15150
15151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015153 -------------------------------------------------------------------------*/
15154 if (( NULL == pEventData ) ||
15155 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15156 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15157 {
15158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 }
15163
15164 /*-----------------------------------------------------------------------
15165 Get message buffer
15166 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015167 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 sizeof(halCfgAppsCpuWakeupStateReqParams),
15169 &pSendBuffer, &usDataOffset, &usSendSize))||
15170 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15171 {
15172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015173 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015174 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015177 }
15178
Jeff Johnsone7245742012-09-05 17:12:55 -070015179 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15181
Jeff Johnsone7245742012-09-05 17:12:55 -070015182 wpalMemoryCopy( pSendBuffer+usDataOffset,
15183 &halCfgAppsCpuWakeupStateReqParams,
15184 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015185
15186 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015187 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015188
15189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015190 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015191 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015192 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15193 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15194 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015195}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15196
15197#ifdef WLAN_FEATURE_VOWIFI_11R
15198/**
15199 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15200 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015201
15202 @param pWDICtx: pointer to the WLAN DAL context
15203 pEventData: pointer to the event information structure
15204
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 @see
15206 @return Result of the function call
15207*/
15208WDI_Status
15209WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015210(
Jeff Johnson295189b2012-06-20 16:38:30 -070015211 WDI_ControlBlockType* pWDICtx,
15212 WDI_EventInfoType* pEventData
15213)
15214{
15215 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15216 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015217 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015219 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015220 wpt_uint16 usDataOffset = 0;
15221 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015222 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015223 wpt_macAddr macBSSID;
15224 tAggrAddTsReq halAggrAddTsReq;
15225 int i;
15226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15227
15228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015229 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 -------------------------------------------------------------------------*/
15231 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15232 ( NULL == pEventData->pCBfnc ))
15233 {
15234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015238 }
15239 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15240 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15241 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15242 /*-------------------------------------------------------------------------
15243 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015244 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015245 -------------------------------------------------------------------------*/
15246 wpalMutexAcquire(&pWDICtx->wptMutex);
15247
15248 /*------------------------------------------------------------------------
15249 Find the BSS for which the request is made and identify WDI session
15250 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15252 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015253 &macBSSID))
15254 {
15255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015256 "This station does not exist in the WDI Station Table %d",
15257 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015260 }
15261
Jeff Johnsone7245742012-09-05 17:12:55 -070015262 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15263 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015264 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15266 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15267 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015268
15269 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015272
Jeff Johnson295189b2012-06-20 16:38:30 -070015273 /*------------------------------------------------------------------------
15274 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015275 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 ------------------------------------------------------------------------*/
15277 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15278 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15280 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15281 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015282
Jeff Johnsone7245742012-09-05 17:12:55 -070015283 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015284 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015285 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 }
15287
15288 wpalMutexRelease(&pWDICtx->wptMutex);
15289 /*-----------------------------------------------------------------------
15290 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015291 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015292 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015293 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 sizeof(tAggrAddTsParams),
15295 &pSendBuffer, &usDataOffset, &usSendSize))||
15296 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15297 {
15298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015299 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 }
15304
Jeff Johnsone7245742012-09-05 17:12:55 -070015305 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015306 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015307 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015308 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15309
15310 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15311 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015312 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015313 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015315 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015316 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015317 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15318 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015319 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015320 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15321 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015322 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015323 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15324 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015325 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015326 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15327 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015328 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15330 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015331 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15333 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015334 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015335 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15336 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015337 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015338 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15339 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015340 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015341 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015342 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015344
15345
15346 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015348 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015349 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015350 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015351 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015352 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015354 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015357 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015358 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015359 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015360 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015361 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015368 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015369 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015372 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015373 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015374 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015375 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15376 }
15377
Jeff Johnsone7245742012-09-05 17:12:55 -070015378 wpalMemoryCopy( pSendBuffer+usDataOffset,
15379 &halAggrAddTsReq,
15380 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015381
15382 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015383 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015384
15385 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015386 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015388 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015390 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015391}/*WDI_ProcessAggrAddTSpecReq*/
15392#endif /* WLAN_FEATURE_VOWIFI_11R */
15393
15394/**
15395 @brief Process Shutdown Request function (called when Main FSM
15396 allows it)
15397
15398 @param pWDICtx: pointer to the WLAN DAL context
15399 pEventData: pointer to the event information structure
15400
15401 @see
15402 @return Result of the function call
15403*/
15404WDI_Status
15405WDI_ProcessShutdownReq
15406(
15407 WDI_ControlBlockType* pWDICtx,
15408 WDI_EventInfoType* pEventData
15409 )
15410{
15411 wpt_status wptStatus;
15412
15413
15414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15415
15416 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015417 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 -------------------------------------------------------------------------*/
15419 if ( NULL == pEventData )
15420 {
15421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015422 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015423 WDI_ASSERT(0);
15424 return WDI_STATUS_E_FAILURE;
15425 }
15426
15427 wpalMutexAcquire(&pWDICtx->wptMutex);
15428
15429
15430 gWDIInitialized = eWLAN_PAL_FALSE;
15431 /*! TO DO: stop the data services */
15432 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15433 {
15434 /*Stop the STA Table !UT- check this logic again
15435 It is safer to do it here than on the response - because a stop is imminent*/
15436 WDI_STATableStop(pWDICtx);
15437
15438 /* Stop Transport Driver, DXE */
15439 WDTS_Stop(pWDICtx);
15440 }
15441
15442 /*Clear all pending request*/
15443 WDI_ClearPendingRequests(pWDICtx);
15444 /* Close Data transport*/
15445 /* FTM mode does not open Data Path */
15446 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15447 {
15448 WDTS_Close(pWDICtx);
15449 }
15450 /*Close the STA Table !UT- check this logic again*/
15451 WDI_STATableClose(pWDICtx);
15452 /*close the PAL */
15453 wptStatus = wpalClose(pWDICtx->pPALContext);
15454 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15455 {
15456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15457 "Failed to wpal Close %d", wptStatus);
15458 WDI_ASSERT(0);
15459 }
15460
15461 /*Transition back to init state*/
15462 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15463
15464 wpalMutexRelease(&pWDICtx->wptMutex);
15465
15466 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015467 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015468
15469
Jeff Johnsone7245742012-09-05 17:12:55 -070015470 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015471}/*WDI_ProcessShutdownReq*/
15472
15473/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015474 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015475========================================================================*/
15476
15477/**
15478 @brief Process Start Response function (called when a response
15479 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015480
15481 @param pWDICtx: pointer to the WLAN DAL context
15482 pEventData: pointer to the event information structure
15483
Jeff Johnson295189b2012-06-20 16:38:30 -070015484 @see
15485 @return Result of the function call
15486*/
15487WDI_Status
15488WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015489(
Jeff Johnson295189b2012-06-20 16:38:30 -070015490 WDI_ControlBlockType* pWDICtx,
15491 WDI_EventInfoType* pEventData
15492)
15493{
15494 WDI_StartRspParamsType wdiRspParams;
15495 WDI_StartRspCb wdiStartRspCb = NULL;
15496
15497 tHalMacStartRspParams* startRspParams;
15498
15499#ifndef HAL_SELF_STA_PER_BSS
15500 WDI_AddStaParams wdiAddSTAParam = {0};
15501#endif
15502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15503
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015507 -------------------------------------------------------------------------*/
15508 if (( NULL == pEventData ) ||
15509 ( NULL == pEventData->pEventData) ||
15510 ( NULL == wdiStartRspCb ))
15511 {
15512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015516 }
15517
15518 /*-------------------------------------------------------------------------
15519 Extract response and send it to UMAC
15520 -------------------------------------------------------------------------*/
15521 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15522 {
15523 // not enough data was received
15524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015525 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015526 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15527 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015528 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015529 }
15530
15531 /*-------------------------------------------------------------------------
15532 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015533 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015534 -------------------------------------------------------------------------*/
15535 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15536
15537 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15538 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15539 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15540 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15541 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15542 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15543 wdiRspParams.wlanReportedVersion.major =
15544 startRspParams->wcnssWlanVersion.major;
15545 wdiRspParams.wlanReportedVersion.minor =
15546 startRspParams->wcnssWlanVersion.minor;
15547 wdiRspParams.wlanReportedVersion.version =
15548 startRspParams->wcnssWlanVersion.version;
15549 wdiRspParams.wlanReportedVersion.revision =
15550 startRspParams->wcnssWlanVersion.revision;
15551 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15552 startRspParams->wcnssCrmVersionString,
15553 sizeof(wdiRspParams.wcnssSoftwareVersion));
15554 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15555 startRspParams->wcnssWlanVersionString,
15556 sizeof(wdiRspParams.wcnssHardwareVersion));
15557 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15558
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015559 /*Save the HAL Version*/
15560 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15561
Jeff Johnson295189b2012-06-20 16:38:30 -070015562 wpalMutexAcquire(&pWDICtx->wptMutex);
15563 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15564 {
15565 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15566
15567 /*Cache the start response for further use*/
15568 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015569 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015570 sizeof(pWDICtx->wdiCachedStartRspParams));
15571
15572 }
15573 else
15574 {
15575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15576 "Failed to start device with status %s(%d)",
15577 WDI_getHALStatusMsgString(startRspParams->status),
15578 startRspParams->status);
15579
15580 /*Set the expected state transition to stopped - because the start has
15581 failed*/
15582 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15583
15584 wpalMutexRelease(&pWDICtx->wptMutex);
15585
15586 /*Notify UMAC*/
15587 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015588
Jeff Johnson295189b2012-06-20 16:38:30 -070015589 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053015590 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070015591
15592 /*Although the response is an error - it was processed by our function
15593 so as far as the caller is concerned this is a succesful reponse processing*/
15594 return WDI_STATUS_SUCCESS;
15595 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015596
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 wpalMutexRelease(&pWDICtx->wptMutex);
15598
15599 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15600 {
15601 /* FTM mode does not need to execute below */
15602 /* Notify UMAC */
15603 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15604 return WDI_STATUS_SUCCESS;
15605 }
15606
15607 /* START the Data transport */
15608 WDTS_startTransport(pWDICtx);
15609
15610 /*Start the STA Table !- check this logic again*/
15611 WDI_STATableStart(pWDICtx);
15612
15613#ifndef HAL_SELF_STA_PER_BSS
15614 /* Store the Self STA Index */
15615 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15616
15617 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15618 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15619 WDI_MAC_ADDR_LEN);
15620
15621 /* At this point add the self-STA */
15622
15623 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15624 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15625 /*! TO DO: wdiAddSTAParam.dpuSig */
15626 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15627 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15628 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15629
15630 //all DPU indices are the same for self STA
15631 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15632 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015633 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15635 WDI_MAC_ADDR_LEN);
15636 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15637 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15638
15639 /* Note: Since we don't get an explicit config STA request for self STA, we
15640 add the self STA upon receiving the Start response message. But the
15641 self STA entry in the table is deleted when WDI gets an explicit delete STA
15642 request */
15643 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15644#endif
15645
15646 /*Notify UMAC*/
15647 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15648
Jeff Johnsone7245742012-09-05 17:12:55 -070015649 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015650}/*WDI_ProcessStartRsp*/
15651
15652
15653/**
15654 @brief Process Stop Response function (called when a response
15655 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015656
15657 @param pWDICtx: pointer to the WLAN DAL context
15658 pEventData: pointer to the event information structure
15659
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 @see
15661 @return Result of the function call
15662*/
15663WDI_Status
15664WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015665(
Jeff Johnson295189b2012-06-20 16:38:30 -070015666 WDI_ControlBlockType* pWDICtx,
15667 WDI_EventInfoType* pEventData
15668)
15669{
15670 WDI_Status wdiStatus;
15671 WDI_StopRspCb wdiStopRspCb = NULL;
15672
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15675
Jeff Johnsone7245742012-09-05 17:12:55 -070015676 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015677 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015678 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 -------------------------------------------------------------------------*/
15680 if (( NULL == pEventData ) ||
15681 ( NULL == pEventData->pEventData) ||
15682 ( NULL == wdiStopRspCb ))
15683 {
15684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015688 }
15689
15690 /*-------------------------------------------------------------------------
15691 Extract response and send it to UMAC
15692 -------------------------------------------------------------------------*/
15693 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15694 {
15695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015696 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015697 pEventData->uEventDataSize);
15698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015700 }
15701
15702 /*-------------------------------------------------------------------------
15703 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015704 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015706 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15707 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015708 sizeof(halMacStopRspMsg.stopRspParams));
15709
Jeff Johnsone7245742012-09-05 17:12:55 -070015710 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015711
15712 wpalMutexAcquire(&pWDICtx->wptMutex);
15713
15714 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015715 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015716 --------------------------------------------------------------------------*/
15717 if ( WDI_STATUS_SUCCESS != wdiStatus )
15718 {
15719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15720 "Failed to stop the device with status %s (%d)",
15721 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15722 halMacStopRspMsg.stopRspParams.status);
15723
Jeff Johnsone7245742012-09-05 17:12:55 -070015724 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053015725 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070015726
Jeff Johnson295189b2012-06-20 16:38:30 -070015727 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015729 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015730
Jeff Johnson295189b2012-06-20 16:38:30 -070015731 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15732
15733 /*Transition now as WDI may get preempted imediately after it sends
15734 up the Stop Response and it will not get to process the state transition
15735 from Main Rsp function*/
15736 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15737 wpalMutexRelease(&pWDICtx->wptMutex);
15738
15739 /*! TO DO: - STOP the Data transport */
15740
15741 /*Notify UMAC*/
15742 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15743
Jeff Johnsone7245742012-09-05 17:12:55 -070015744 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015745}/*WDI_ProcessStopRsp*/
15746
15747/**
15748 @brief Process Close Rsp function (called when a response
15749 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015750
15751 @param pWDICtx: pointer to the WLAN DAL context
15752 pEventData: pointer to the event information structure
15753
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 @see
15755 @return Result of the function call
15756*/
15757WDI_Status
15758WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015759(
Jeff Johnson295189b2012-06-20 16:38:30 -070015760 WDI_ControlBlockType* pWDICtx,
15761 WDI_EventInfoType* pEventData
15762)
15763{
15764 /*There is no close response comming from HAL - function just kept for
15765 simmetry */
15766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015767 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015768}/*WDI_ProcessCloseRsp*/
15769
15770
15771/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015772 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015773============================================================================*/
15774
15775/**
15776 @brief Process Init Scan Rsp function (called when a response
15777 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015778
15779 @param pWDICtx: pointer to the WLAN DAL context
15780 pEventData: pointer to the event information structure
15781
Jeff Johnson295189b2012-06-20 16:38:30 -070015782 @see
15783 @return Result of the function call
15784*/
15785WDI_Status
15786WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015787(
Jeff Johnson295189b2012-06-20 16:38:30 -070015788 WDI_ControlBlockType* pWDICtx,
15789 WDI_EventInfoType* pEventData
15790)
15791{
15792 WDI_Status wdiStatus;
15793 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015794 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015795 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15797
15798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 -------------------------------------------------------------------------*/
15801 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15802 ( NULL == pEventData->pEventData))
15803 {
15804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015805 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 }
15809
15810 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15811 if( NULL == wdiInitScanRspCb)
15812 {
15813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015814 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 }
15818
15819 /*-------------------------------------------------------------------------
15820 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015821 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015822 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015823 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15824 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015825 sizeof(halInitScanRspMsg.initScanRspParams));
15826
Jeff Johnsone7245742012-09-05 17:12:55 -070015827 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015828
15829 if ( pWDICtx->bInBmps )
15830 {
15831 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080015832 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15833 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015835 "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 -080015836 WDI_ASSERT(0);
15837 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015838 }
15839
15840 /*Notify UMAC*/
15841 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15842
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015844}/*WDI_ProcessInitScanRsp*/
15845
15846
15847/**
15848 @brief Process Start Scan Rsp function (called when a response
15849 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015850
15851 @param pWDICtx: pointer to the WLAN DAL context
15852 pEventData: pointer to the event information structure
15853
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 @see
15855 @return Result of the function call
15856*/
15857WDI_Status
15858WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015859(
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 WDI_ControlBlockType* pWDICtx,
15861 WDI_EventInfoType* pEventData
15862)
15863{
15864 WDI_StartScanRspParamsType wdiStartScanParams;
15865 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015866
15867 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15869
15870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 -------------------------------------------------------------------------*/
15873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15874 ( NULL == pEventData->pEventData))
15875 {
15876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 }
15881
15882 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15883 if( NULL == wdiStartScanRspCb)
15884 {
15885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015886 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 }
15890
15891 /*-------------------------------------------------------------------------
15892 Extract response and send it to UMAC
15893 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015894 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15895 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015896 sizeof(halStartScanRspMsg.startScanRspParams));
15897
15898 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15899 halStartScanRspMsg.startScanRspParams.status);
15900#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015901 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015902 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015903 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015904 halStartScanRspMsg.startScanRspParams.startTSF,
15905 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015906#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015907
15908 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15909 {
15910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15911 "Start scan failed with status %s (%d)",
15912 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15913 halStartScanRspMsg.startScanRspParams.status);
15914 /* send the status to UMAC, don't return from here*/
15915 }
15916
15917 /*Notify UMAC*/
15918 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15919
Jeff Johnsone7245742012-09-05 17:12:55 -070015920 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015921
15922}/*WDI_ProcessStartScanRsp*/
15923
15924
15925/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015926 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015928
15929 @param pWDICtx: pointer to the WLAN DAL context
15930 pEventData: pointer to the event information structure
15931
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 @see
15933 @return Result of the function call
15934*/
15935WDI_Status
15936WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015937(
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 WDI_ControlBlockType* pWDICtx,
15939 WDI_EventInfoType* pEventData
15940)
15941{
15942 WDI_Status wdiStatus;
15943 tHalEndScanRspMsg halEndScanRspMsg;
15944 WDI_EndScanRspCb wdiEndScanRspCb;
15945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15946
15947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 -------------------------------------------------------------------------*/
15950 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15951 ( NULL == pEventData->pEventData))
15952 {
15953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015957 }
15958
15959 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15960
15961 /*-------------------------------------------------------------------------
15962 Extract response and send it to UMAC
15963 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015964 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15965 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 sizeof(halEndScanRspMsg.endScanRspParams));
15967
Jeff Johnsone7245742012-09-05 17:12:55 -070015968 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015969
15970 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15971 {
15972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15973 "End Scan failed with status %s (%d )",
15974 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15975 halEndScanRspMsg.endScanRspParams.status);
15976 /* send the status to UMAC, don't return from here*/
15977 }
15978
15979 /*Notify UMAC*/
15980 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15981
Jeff Johnsone7245742012-09-05 17:12:55 -070015982 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015983}/*WDI_ProcessEndScanRsp*/
15984
15985
15986/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015987 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015988 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015989
15990 @param pWDICtx: pointer to the WLAN DAL context
15991 pEventData: pointer to the event information structure
15992
Jeff Johnson295189b2012-06-20 16:38:30 -070015993 @see
15994 @return Result of the function call
15995*/
15996WDI_Status
15997WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015998(
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 WDI_ControlBlockType* pWDICtx,
16000 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016001)
Jeff Johnson295189b2012-06-20 16:38:30 -070016002{
16003 WDI_Status wdiStatus;
16004 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016005
16006 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16008
16009 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016010 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016011 -------------------------------------------------------------------------*/
16012 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16013 ( NULL == pEventData->pEventData))
16014 {
16015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016019 }
16020
16021 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16022
16023 /*-------------------------------------------------------------------------
16024 Extract response and send it to UMAC
16025 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016026 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16027 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016028 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16029
Jeff Johnsone7245742012-09-05 17:12:55 -070016030 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016031
16032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016033 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016034 halFinishScanRspMsg.finishScanRspParams.status);
16035
16036 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16037 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16038 {
16039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16040 "Finish Scan failed with status %s (%d)",
16041 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16042 halFinishScanRspMsg.finishScanRspParams.status);
16043 /* send the status to UMAC, don't return from here*/
16044 }
16045
16046 /*Notify UMAC*/
16047 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16048
Jeff Johnsone7245742012-09-05 17:12:55 -070016049 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016050}/*WDI_ProcessFinishScanRsp*/
16051
16052/**
16053 @brief Process Join Response function (called when a response
16054 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016055
16056 @param pWDICtx: pointer to the WLAN DAL context
16057 pEventData: pointer to the event information structure
16058
Jeff Johnson295189b2012-06-20 16:38:30 -070016059 @see
16060 @return Result of the function call
16061*/
16062WDI_Status
16063WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016064(
Jeff Johnson295189b2012-06-20 16:38:30 -070016065 WDI_ControlBlockType* pWDICtx,
16066 WDI_EventInfoType* pEventData
16067)
16068{
16069 WDI_Status wdiStatus;
16070 WDI_JoinRspCb wdiJoinRspCb;
16071 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016072
16073 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16075
16076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016077 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 -------------------------------------------------------------------------*/
16079 if (( NULL == pWDICtx ) ||
16080 ( NULL == pWDICtx->pfncRspCB ) ||
16081 ( NULL == pEventData ) ||
16082 ( NULL == pEventData->pEventData))
16083 {
16084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016088 }
16089
16090 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16091
16092 /*-------------------------------------------------------------------------
16093 Extract response and send it to UMAC
16094 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016095 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16096 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 sizeof(halJoinRspMsg.joinRspParams));
16098
Jeff Johnsone7245742012-09-05 17:12:55 -070016099 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016100
16101 wpalMutexAcquire(&pWDICtx->wptMutex);
16102
16103 /*-----------------------------------------------------------------------
16104 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016105 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016106 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016107 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016108 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16109 {
16110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016111 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16112 "association no longer in progress %d - mysterious HAL response",
16113 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016114
Jeff Johnsone7245742012-09-05 17:12:55 -070016115 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016116 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016117 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 }
16119
16120 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16121
16122 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016123 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 -----------------------------------------------------------------------*/
16125 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16126 {
16127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16128 "Join only allowed in Joining state - failure state is %d "
16129 "strange HAL response", pBSSSes->wdiAssocState);
16130
Jeff Johnsone7245742012-09-05 17:12:55 -070016131 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16132
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016134 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016135 }
16136
16137
16138 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016139 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016140 -----------------------------------------------------------------------*/
16141 if ( WDI_STATUS_SUCCESS != wdiStatus )
16142 {
16143 /*Association was failed by HAL - remove session*/
16144 WDI_DeleteSession(pWDICtx, pBSSSes);
16145
16146 /*Association no longer in progress */
16147 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16148
16149 /*Association no longer in progress - prepare pending assoc for processing*/
16150 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016151
Jeff Johnson295189b2012-06-20 16:38:30 -070016152 }
16153 else
16154 {
16155 /*Transition to state Joining - this may be redundant as we are supposed
16156 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016157 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016158 }
16159
16160 wpalMutexRelease(&pWDICtx->wptMutex);
16161
16162 /*Notify UMAC*/
16163 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16164
Jeff Johnsone7245742012-09-05 17:12:55 -070016165 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016166}/*WDI_ProcessJoinRsp*/
16167
16168
16169/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016172
16173 @param pWDICtx: pointer to the WLAN DAL context
16174 pEventData: pointer to the event information structure
16175
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 @see
16177 @return Result of the function call
16178*/
16179WDI_Status
16180WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016181(
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 WDI_ControlBlockType* pWDICtx,
16183 WDI_EventInfoType* pEventData
16184)
16185{
16186 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16187 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 WDI_BSSSessionType* pBSSSes = NULL;
16190
Jeff Johnsone7245742012-09-05 17:12:55 -070016191 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016192 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16193 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016194
Jeff Johnson295189b2012-06-20 16:38:30 -070016195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16196
16197 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 -------------------------------------------------------------------------*/
16200 if (( NULL == pEventData ) ||
16201 ( NULL == pEventData->pEventData))
16202 {
16203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016204 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016206 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 }
16208
16209 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16210
16211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016212 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016213 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016214 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16215 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 sizeof(halConfigBssRspMsg.configBssRspParams));
16217
16218 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16219 halConfigBssRspMsg.configBssRspParams.status);
16220 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16221 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016222 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016223 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16224 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016225
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016227
16228 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016229 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016230
16231 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016232 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016233
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016235
Jeff Johnson295189b2012-06-20 16:38:30 -070016236 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016237 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016238 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16239 #endif
16240 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16241 halConfigBssRspMsg.configBssRspParams.staMac,
16242 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016243
Jeff Johnson295189b2012-06-20 16:38:30 -070016244 wpalMutexAcquire(&pWDICtx->wptMutex);
16245 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016246 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016247 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016248 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16249 wdiConfigBSSParams.macBSSID,
16250 &pBSSSes);
16251
Jeff Johnson295189b2012-06-20 16:38:30 -070016252 /*-----------------------------------------------------------------------
16253 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016254 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016255 -----------------------------------------------------------------------*/
16256 if ( NULL == pBSSSes )
16257 {
16258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16259 "Association sequence for this BSS does not yet exist "
16260 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016261
16262 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16263
Jeff Johnson295189b2012-06-20 16:38:30 -070016264 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016265 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016266 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016267
Jeff Johnson295189b2012-06-20 16:38:30 -070016268 /*Save data for this BSS*/
16269 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16270 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016271 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016272 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016273 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016274 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016275 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016276 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016277 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016278 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016279 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016280 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16281 pBSSSes->bcastStaIdx =
16282 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016283
Jeff Johnson295189b2012-06-20 16:38:30 -070016284 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016285
Jeff Johnson295189b2012-06-20 16:38:30 -070016286 /*-------------------------------------------------------------------------
16287 Add Peer STA
16288 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016289 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016290 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16291 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016292
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016294 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016295 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016296 wdiAddSTAParam.ucHTCapable =
16297 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16298 wdiAddSTAParam.ucStaType =
16299 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16300
Jeff Johnson295189b2012-06-20 16:38:30 -070016301 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016302 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16303 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016304 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016305
16306 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16307 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16308 WDI_MAC_ADDR_LEN);
16309
Jeff Johnson295189b2012-06-20 16:38:30 -070016310 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016311 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016312 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016313 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016314 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016315 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016316 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016317 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016318 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016319 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016320 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016321 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016322 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016323
Jeff Johnson295189b2012-06-20 16:38:30 -070016324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16325 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016326
Jeff Johnson295189b2012-06-20 16:38:30 -070016327 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16328 /*-------------------------------------------------------------------------
16329 Add Broadcast STA only in AP mode
16330 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016331 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016332 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016333 {
16334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16335 "Add BCAST STA to table for index: %d",
16336 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016337
16338 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016339 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016340
Jeff Johnson295189b2012-06-20 16:38:30 -070016341 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16342 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16343 }
16344 wpalMutexRelease(&pWDICtx->wptMutex);
16345 }
16346 else
16347 {
16348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16349 "Config BSS RSP failed with status : %s(%d)",
16350 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016351 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016352 halConfigBssRspMsg.configBssRspParams.status);
16353
Jeff Johnsone7245742012-09-05 17:12:55 -070016354
Jeff Johnson295189b2012-06-20 16:38:30 -070016355 /*Association was failed by HAL - remove session*/
16356 WDI_DeleteSession(pWDICtx, pBSSSes);
16357
16358 /*Association no longer in progress */
16359 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16360
16361 /*Association no longer in progress - prepare pending assoc for processing*/
16362 WDI_DequeueAssocRequest(pWDICtx);
16363
16364 }
16365
16366 /*Notify UMAC*/
16367 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16368
Jeff Johnsone7245742012-09-05 17:12:55 -070016369 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016370}/*WDI_ProcessConfigBSSRsp*/
16371
16372
16373/**
16374 @brief Process Del BSS Response function (called when a response
16375 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016376
16377 @param pWDICtx: pointer to the WLAN DAL context
16378 pEventData: pointer to the event information structure
16379
Jeff Johnson295189b2012-06-20 16:38:30 -070016380 @see
16381 @return Result of the function call
16382*/
16383WDI_Status
16384WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016385(
Jeff Johnson295189b2012-06-20 16:38:30 -070016386 WDI_ControlBlockType* pWDICtx,
16387 WDI_EventInfoType* pEventData
16388)
16389{
16390 WDI_DelBSSRspParamsType wdiDelBSSParams;
16391 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016392 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016393 WDI_BSSSessionType* pBSSSes = NULL;
16394
Jeff Johnsone7245742012-09-05 17:12:55 -070016395 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16397
16398 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016399 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016400 -------------------------------------------------------------------------*/
16401 if (( NULL == pEventData ) ||
16402 ( NULL == pEventData->pEventData))
16403 {
16404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016408 }
16409
16410 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16411
16412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016413 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016414 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016415 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16416 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 sizeof(halDelBssRspMsg.deleteBssRspParams));
16418
16419
16420 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016421 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016422
16423 wpalMutexAcquire(&pWDICtx->wptMutex);
16424
16425 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016426 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016427 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016428 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16429 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16430 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016431
16432 /*-----------------------------------------------------------------------
16433 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016434 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016435 -----------------------------------------------------------------------*/
16436 if ( NULL == pBSSSes )
16437 {
16438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16439 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016440 "association no longer in progress - mysterious HAL response");
16441
16442 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16443
16444 wpalMutexRelease(&pWDICtx->wptMutex);
16445 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016446 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016447
16448 /*Extract BSSID for the response to UMAC*/
16449 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16450 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16451
16452 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16453
16454 /*-----------------------------------------------------------------------
16455 The current session will be deleted
16456 -----------------------------------------------------------------------*/
16457 WDI_DeleteSession(pWDICtx, pBSSSes);
16458
16459
16460 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016461 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16462 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016463 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016464 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016465 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016466
16467 /* Delete the STA's in this BSS */
16468 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16469
Jeff Johnson295189b2012-06-20 16:38:30 -070016470 wpalMutexRelease(&pWDICtx->wptMutex);
16471
16472 /*Notify UMAC*/
16473 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16474
Jeff Johnsone7245742012-09-05 17:12:55 -070016475 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016476}/*WDI_ProcessDelBSSRsp*/
16477
16478/**
16479 @brief Process Post Assoc Rsp function (called when a response
16480 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016481
16482 @param pWDICtx: pointer to the WLAN DAL context
16483 pEventData: pointer to the event information structure
16484
Jeff Johnson295189b2012-06-20 16:38:30 -070016485 @see
16486 @return Result of the function call
16487*/
16488WDI_Status
16489WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016490(
Jeff Johnson295189b2012-06-20 16:38:30 -070016491 WDI_ControlBlockType* pWDICtx,
16492 WDI_EventInfoType* pEventData
16493)
16494{
16495 WDI_PostAssocRspParamsType wdiPostAssocParams;
16496 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016497 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016498 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016499 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016500 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16501
16502 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016503 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016504 -------------------------------------------------------------------------*/
16505 if (( NULL == pEventData ) ||
16506 ( NULL == pEventData->pEventData))
16507 {
16508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016509 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016510 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016511 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016512 }
16513
16514 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16515
16516 /*-------------------------------------------------------------------------
16517 Extract response and send it to UMAC
16518 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016519 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16520 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016521 sizeof(halPostAssocRspMsg.postAssocRspParams));
16522
16523 /*Extract the Post Assoc STA Params */
16524
Jeff Johnsone7245742012-09-05 17:12:55 -070016525 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016526 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016527 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016528 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016529 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016530 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16531
Jeff Johnsone7245742012-09-05 17:12:55 -070016532 wdiPostAssocParams.wdiStatus =
16533 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016534
16535 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16536 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016537 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16538 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016539 WDI_MAC_ADDR_LEN);
16540
16541 /* Extract Post Assoc BSS Params */
16542
Jeff Johnsone7245742012-09-05 17:12:55 -070016543 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16544 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16545 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016546
16547 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16548 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016549 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016550 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16551 .macSTA, WDI_MAC_ADDR_LEN);
16552
Jeff Johnsone7245742012-09-05 17:12:55 -070016553 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016554 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16555
Jeff Johnsone7245742012-09-05 17:12:55 -070016556 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16558
16559 wdiPostAssocParams.bssParams.ucBSSIdx =
16560 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16561
Jeff Johnsone7245742012-09-05 17:12:55 -070016562 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16564
16565 wpalMutexAcquire(&pWDICtx->wptMutex);
16566
16567 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016569 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016572 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016573
16574 /*-----------------------------------------------------------------------
16575 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016576 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 -----------------------------------------------------------------------*/
16578 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016579 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16581 {
16582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16583 "Association sequence for this BSS does not yet exist or "
16584 "association no longer in progress - mysterious HAL response");
16585
Jeff Johnsone7245742012-09-05 17:12:55 -070016586 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16587
Jeff Johnson295189b2012-06-20 16:38:30 -070016588 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016589 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016590 }
16591
16592 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 -----------------------------------------------------------------------*/
16595 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16596 {
16597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16598 "Post Assoc not allowed before JOIN - failing request "
16599 "strange HAL response");
16600
Jeff Johnsone7245742012-09-05 17:12:55 -070016601 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16602
Jeff Johnson295189b2012-06-20 16:38:30 -070016603 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016604 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016605 }
16606
16607 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016608 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016609 -----------------------------------------------------------------------*/
16610 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16611 {
16612 /*Association was failed by HAL - remove session*/
16613 WDI_DeleteSession(pWDICtx, pBSSSes);
16614 }
16615 else
16616 {
16617 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016618 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016619
16620 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016621 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016623 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016624 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016625 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016626 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016627 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16629
Jeff Johnsone7245742012-09-05 17:12:55 -070016630 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016631 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16632 }
16633
16634 /*Association no longer in progress */
16635 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16636
16637 /*Association no longer in progress - prepare pending assoc for processing*/
16638 WDI_DequeueAssocRequest(pWDICtx);
16639
16640 wpalMutexRelease(&pWDICtx->wptMutex);
16641
16642 /*Notify UMAC*/
16643 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16644
Jeff Johnsone7245742012-09-05 17:12:55 -070016645 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016646}/*WDI_ProcessPostAssocRsp*/
16647
16648/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016649 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016650 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016651
16652 @param pWDICtx: pointer to the WLAN DAL context
16653 pEventData: pointer to the event information structure
16654
Jeff Johnson295189b2012-06-20 16:38:30 -070016655 @see
16656 @return Result of the function call
16657*/
16658WDI_Status
16659WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016660(
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 WDI_ControlBlockType* pWDICtx,
16662 WDI_EventInfoType* pEventData
16663)
16664{
16665 WDI_DelSTARspParamsType wdiDelSTARsp;
16666 WDI_DelSTARspCb wdiDelSTARspCb;
16667 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016668 tDeleteStaRspMsg halDelStaRspMsg;
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 == pWDICtx ) || ( 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 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16684
16685 /*-------------------------------------------------------------------------
16686 Extract response and send it to UMAC
16687 -------------------------------------------------------------------------*/
16688 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016689 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016690 sizeof(halDelStaRspMsg.delStaRspParams));
16691
16692 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016693 wdiDelSTARsp.wdiStatus =
16694 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016695
16696 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16697
16698 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16699 if(staType == WDI_STA_ENTRY_SELF)
16700 {
16701 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16702
16703 /* At this point add the self-STA */
16704
16705 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16706 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16707 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16708
16709#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16710#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16711
16712 //all DPU indices are the same for self STA
16713 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16714 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16715 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16716 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16717 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16718 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016719
16720 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016721 }
16722 else
16723 {
16724 //Delete the station in the table
16725 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16726 }
16727
16728 /*Notify UMAC*/
16729 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16730
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016732}/*WDI_ProcessDelSTARsp*/
16733
16734
16735/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016736 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016737==========================================================================*/
16738
16739/**
16740 @brief Process Set BSS Key Rsp function (called when a response
16741 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016742
16743 @param pWDICtx: pointer to the WLAN DAL context
16744 pEventData: pointer to the event information structure
16745
Jeff Johnson295189b2012-06-20 16:38:30 -070016746 @see
16747 @return Result of the function call
16748*/
16749WDI_Status
16750WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016751(
Jeff Johnson295189b2012-06-20 16:38:30 -070016752 WDI_ControlBlockType* pWDICtx,
16753 WDI_EventInfoType* pEventData
16754)
16755{
16756 WDI_Status wdiStatus;
16757 eHalStatus halStatus;
16758 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16760
16761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016762 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016763 -------------------------------------------------------------------------*/
16764 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16765 ( NULL == pEventData->pEventData))
16766 {
16767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016771 }
16772
16773 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16774
16775 /*-------------------------------------------------------------------------
16776 Extract response and send it to UMAC
16777 -------------------------------------------------------------------------*/
16778 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016779 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016780
16781 if ( eHAL_STATUS_SUCCESS != halStatus )
16782 {
16783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16784 "Set BSS Key failed with status %s (%d)",
16785 WDI_getHALStatusMsgString(halStatus),
16786 halStatus);
16787 /* send the status to UMAC, don't return from here*/
16788 }
16789
16790 /*Notify UMAC*/
16791 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16792
Jeff Johnsone7245742012-09-05 17:12:55 -070016793 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016794}/*WDI_ProcessSetBssKeyRsp*/
16795
16796/**
16797 @brief Process Remove BSS Key Rsp function (called when a response
16798 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016799
16800 @param pWDICtx: pointer to the WLAN DAL context
16801 pEventData: pointer to the event information structure
16802
Jeff Johnson295189b2012-06-20 16:38:30 -070016803 @see
16804 @return Result of the function call
16805*/
16806WDI_Status
16807WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016808(
Jeff Johnson295189b2012-06-20 16:38:30 -070016809 WDI_ControlBlockType* pWDICtx,
16810 WDI_EventInfoType* pEventData
16811)
16812{
16813 WDI_Status wdiStatus;
16814 eHalStatus halStatus;
16815 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16817
16818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016819 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016820 -------------------------------------------------------------------------*/
16821 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16822 ( NULL == pEventData->pEventData))
16823 {
16824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016825 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016828 }
16829
16830 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16831
16832 /*-------------------------------------------------------------------------
16833 Extract response and send it to UMAC
16834 -------------------------------------------------------------------------*/
16835 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016836 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016837
16838 if ( eHAL_STATUS_SUCCESS != halStatus )
16839 {
16840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16841 "Remove BSS Key failed with status %s (%d )",
16842 WDI_getHALStatusMsgString(halStatus),
16843 halStatus);
16844 /* send the status to UMAC, don't return from here*/
16845 }
16846
16847 /*Notify UMAC*/
16848 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16849
Jeff Johnsone7245742012-09-05 17:12:55 -070016850 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016851}/*WDI_ProcessSetBssKeyRsp*/
16852
16853
16854/**
16855 @brief Process Set STA Key Rsp function (called when a response
16856 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016857
16858 @param pWDICtx: pointer to the WLAN DAL context
16859 pEventData: pointer to the event information structure
16860
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 @see
16862 @return Result of the function call
16863*/
16864WDI_Status
16865WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016866(
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 WDI_ControlBlockType* pWDICtx,
16868 WDI_EventInfoType* pEventData
16869)
16870{
16871 WDI_Status wdiStatus;
16872 eHalStatus halStatus;
16873 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16875
16876 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016877 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016878 -------------------------------------------------------------------------*/
16879 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16880 ( NULL == pEventData->pEventData))
16881 {
16882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016886 }
16887
16888 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16889
16890 /*-------------------------------------------------------------------------
16891 Extract response and send it to UMAC
16892 -------------------------------------------------------------------------*/
16893 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016894 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016895
16896 if ( eHAL_STATUS_SUCCESS != halStatus )
16897 {
16898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16899 "Set STA Key failed with status %s (%d)",
16900 WDI_getHALStatusMsgString(halStatus),
16901 halStatus);
16902 /* send the status to UMAC, don't return from here*/
16903 }
16904
16905 /*Notify UMAC*/
16906 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16907
Jeff Johnsone7245742012-09-05 17:12:55 -070016908 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016909}/*WDI_ProcessSetSTAKeyRsp*/
16910
16911/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016912 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016913 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016914
16915 @param pWDICtx: pointer to the WLAN DAL context
16916 pEventData: pointer to the event information structure
16917
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 @see
16919 @return Result of the function call
16920*/
16921WDI_Status
16922WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016923(
Jeff Johnson295189b2012-06-20 16:38:30 -070016924 WDI_ControlBlockType* pWDICtx,
16925 WDI_EventInfoType* pEventData
16926)
16927{
16928 WDI_Status wdiStatus;
16929 eHalStatus halStatus;
16930 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16932
16933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016934 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016935 -------------------------------------------------------------------------*/
16936 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16937 ( NULL == pEventData->pEventData))
16938 {
16939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016940 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016943 }
16944
16945 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16946
16947 /*-------------------------------------------------------------------------
16948 Extract response and send it to UMAC
16949 -------------------------------------------------------------------------*/
16950 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016951 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016952
16953 if ( eHAL_STATUS_SUCCESS != halStatus )
16954 {
16955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16956 "Remove STA Key failed with status %s (%d)",
16957 WDI_getHALStatusMsgString(halStatus),
16958 halStatus);
16959 /* send the status to UMAC, don't return from here*/
16960 }
16961
16962 /*Notify UMAC*/
16963 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16964
Jeff Johnsone7245742012-09-05 17:12:55 -070016965 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016966}/*WDI_ProcessRemoveStaKeyRsp*/
16967
16968/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016969 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016970 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016971
16972 @param pWDICtx: pointer to the WLAN DAL context
16973 pEventData: pointer to the event information structure
16974
Jeff Johnson295189b2012-06-20 16:38:30 -070016975 @see
16976 @return Result of the function call
16977*/
16978WDI_Status
16979WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016980(
Jeff Johnson295189b2012-06-20 16:38:30 -070016981 WDI_ControlBlockType* pWDICtx,
16982 WDI_EventInfoType* pEventData
16983)
16984{
16985 WDI_Status wdiStatus;
16986 eHalStatus halStatus;
16987 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16989
16990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016991 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016992 -------------------------------------------------------------------------*/
16993 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16994 ( NULL == pEventData->pEventData))
16995 {
16996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016997 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016998 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017000 }
17001
17002 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17003
17004 /*-------------------------------------------------------------------------
17005 Extract response and send it to UMAC
17006 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017007 wpalMemoryCopy( &halStatus,
17008 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 sizeof(halStatus));
17010
Jeff Johnsone7245742012-09-05 17:12:55 -070017011 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017012
17013 if ( eHAL_STATUS_SUCCESS != halStatus )
17014 {
17015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17016 "Set STA Key failed with status %s (%d)",
17017 WDI_getHALStatusMsgString(halStatus),
17018 halStatus);
17019 /* send the status to UMAC, don't return from here*/
17020 }
17021
17022 /*Notify UMAC*/
17023 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17024
Jeff Johnsone7245742012-09-05 17:12:55 -070017025 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017026}/*WDI_ProcessSetSTABcastKeyRsp*/
17027
17028/**
17029 @brief Process Remove STA Bcast Key Rsp function (called when a
17030 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017031
17032 @param pWDICtx: pointer to the WLAN DAL context
17033 pEventData: pointer to the event information structure
17034
Jeff Johnson295189b2012-06-20 16:38:30 -070017035 @see
17036 @return Result of the function call
17037*/
17038WDI_Status
17039WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017040(
Jeff Johnson295189b2012-06-20 16:38:30 -070017041 WDI_ControlBlockType* pWDICtx,
17042 WDI_EventInfoType* pEventData
17043)
17044{
17045 WDI_Status wdiStatus;
17046 eHalStatus halStatus;
17047 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17049
17050 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 -------------------------------------------------------------------------*/
17053 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17054 ( NULL == pEventData->pEventData))
17055 {
17056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017057 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017060 }
17061
17062 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17063
17064 /*-------------------------------------------------------------------------
17065 Extract response and send it to UMAC
17066 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 wpalMemoryCopy( &halStatus,
17068 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017069 sizeof(halStatus));
17070
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017072
17073 if ( eHAL_STATUS_SUCCESS != halStatus )
17074 {
17075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17076 "Remove STA Key failed with status %s (%d)",
17077 WDI_getHALStatusMsgString(halStatus),
17078 halStatus);
17079 /* send the status to UMAC, don't return from here*/
17080 }
17081
17082 /*Notify UMAC*/
17083 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17084
Jeff Johnsone7245742012-09-05 17:12:55 -070017085 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017086}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17087
17088
17089/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017091==========================================================================*/
17092
17093/**
17094 @brief Process Add TSpec Rsp function (called when a response
17095 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017096
17097 @param pWDICtx: pointer to the WLAN DAL context
17098 pEventData: pointer to the event information structure
17099
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 @see
17101 @return Result of the function call
17102*/
17103WDI_Status
17104WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017105(
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 WDI_ControlBlockType* pWDICtx,
17107 WDI_EventInfoType* pEventData
17108)
17109{
17110 WDI_Status wdiStatus;
17111 eHalStatus halStatus;
17112 WDI_AddTsRspCb wdiAddTsRspCb;
17113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17114
17115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017116 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017117 -------------------------------------------------------------------------*/
17118 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17119 ( NULL == pEventData->pEventData))
17120 {
17121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017122 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017123 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017124 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017125 }
17126
17127 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17128
17129 /*-------------------------------------------------------------------------
17130 Extract response and send it to UMAC
17131 -------------------------------------------------------------------------*/
17132 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017133 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017134
17135 /*Notify UMAC*/
17136 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17137
Jeff Johnsone7245742012-09-05 17:12:55 -070017138 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017139}/*WDI_ProcessAddTSpecRsp*/
17140
17141
Sunil Duttbd736ed2014-05-26 21:19:41 +053017142
17143#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17144
17145WDI_Status
17146WDI_ProcessLLStatsSetRsp
17147(
17148 WDI_ControlBlockType* pWDICtx,
17149 WDI_EventInfoType* pEventData
17150)
17151{
17152 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17153
17154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17155 "%s: Enter ", __func__);
17156 /*-------------------------------------------------------------------------
17157 Sanity check
17158 -------------------------------------------------------------------------*/
17159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17160 ( NULL == pEventData->pEventData))
17161 {
17162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17163 "%s: Invalid parameters", __func__);
17164 WDI_ASSERT(0);
17165 return WDI_STATUS_E_FAILURE;
17166 }
17167
17168 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17169
17170 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17171
17172 return WDI_STATUS_SUCCESS;
17173}
17174
17175WDI_Status
17176WDI_ProcessLLStatsGetRsp
17177(
17178 WDI_ControlBlockType* pWDICtx,
17179 WDI_EventInfoType* pEventData
17180)
17181{
17182 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17183
17184 /*-------------------------------------------------------------------------
17185 Sanity check
17186 -------------------------------------------------------------------------*/
17187 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17188 ( NULL == pEventData->pEventData))
17189 {
17190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17191 "%s: Invalid parameters", __func__);
17192 WDI_ASSERT(0);
17193 return WDI_STATUS_E_FAILURE;
17194 }
17195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17196 "%s: Enter ", __func__);
17197
17198 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17199
17200 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17201
17202 return WDI_STATUS_SUCCESS;
17203}
17204
17205WDI_Status
17206WDI_ProcessLLStatsClearRsp
17207(
17208 WDI_ControlBlockType* pWDICtx,
17209 WDI_EventInfoType* pEventData
17210)
17211{
17212 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17213
17214 /*-------------------------------------------------------------------------
17215 Sanity check
17216 -------------------------------------------------------------------------*/
17217 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17218 ( NULL == pEventData->pEventData))
17219 {
17220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17221 "%s: Invalid parameters", __func__);
17222 WDI_ASSERT(0);
17223 return WDI_STATUS_E_FAILURE;
17224 }
17225
17226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17227 "%s: CLEAR RESPONSE CALL BACK", __func__);
17228 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17229
17230 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17231
17232 return WDI_STATUS_SUCCESS;
17233}
17234#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17235
Jeff Johnson295189b2012-06-20 16:38:30 -070017236/**
17237 @brief Process Del TSpec Rsp function (called when a response
17238 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017239
17240 @param pWDICtx: pointer to the WLAN DAL context
17241 pEventData: pointer to the event information structure
17242
Jeff Johnson295189b2012-06-20 16:38:30 -070017243 @see
17244 @return Result of the function call
17245*/
17246WDI_Status
17247WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017248(
Jeff Johnson295189b2012-06-20 16:38:30 -070017249 WDI_ControlBlockType* pWDICtx,
17250 WDI_EventInfoType* pEventData
17251)
17252{
17253 WDI_Status wdiStatus;
17254 eHalStatus halStatus;
17255 WDI_DelTsRspCb wdiDelTsRspCb;
17256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17257
17258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017259 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 -------------------------------------------------------------------------*/
17261 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17262 ( NULL == pEventData->pEventData))
17263 {
17264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017268 }
17269
17270 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17271
17272 /*-------------------------------------------------------------------------
17273 Extract response and send it to UMAC
17274 -------------------------------------------------------------------------*/
17275 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017276 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017277
17278 /*Notify UMAC*/
17279 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17280
Jeff Johnsone7245742012-09-05 17:12:55 -070017281 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017282}/*WDI_ProcessDelTSpecRsp*/
17283
17284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017285 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017286 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017287
17288 @param pWDICtx: pointer to the WLAN DAL context
17289 pEventData: pointer to the event information structure
17290
Jeff Johnson295189b2012-06-20 16:38:30 -070017291 @see
17292 @return Result of the function call
17293*/
17294WDI_Status
17295WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017296(
Jeff Johnson295189b2012-06-20 16:38:30 -070017297 WDI_ControlBlockType* pWDICtx,
17298 WDI_EventInfoType* pEventData
17299)
17300{
17301 WDI_Status wdiStatus;
17302 eHalStatus halStatus;
17303 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17305
17306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017308 -------------------------------------------------------------------------*/
17309 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17310 ( NULL == pEventData->pEventData))
17311 {
17312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017313 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017314 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017315 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017316 }
17317
17318 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17319
17320 /*-------------------------------------------------------------------------
17321 Extract response and send it to UMAC
17322 -------------------------------------------------------------------------*/
17323 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017324 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017325
17326 /*Notify UMAC*/
17327 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17328
Jeff Johnsone7245742012-09-05 17:12:55 -070017329 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017330}/*WDI_ProcessUpdateEDCAParamsRsp*/
17331
17332
17333/**
17334 @brief Process Add BA Rsp function (called when a response
17335 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017336
17337 @param pWDICtx: pointer to the WLAN DAL context
17338 pEventData: pointer to the event information structure
17339
Jeff Johnson295189b2012-06-20 16:38:30 -070017340 @see
17341 @return Result of the function call
17342*/
17343WDI_Status
17344WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017345(
Jeff Johnson295189b2012-06-20 16:38:30 -070017346 WDI_ControlBlockType* pWDICtx,
17347 WDI_EventInfoType* pEventData
17348)
17349{
17350 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17351
17352 tAddBASessionRspParams halBASessionRsp;
17353 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17354
Jeff Johnsone7245742012-09-05 17:12:55 -070017355
Jeff Johnson295189b2012-06-20 16:38:30 -070017356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17357
17358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017360 -------------------------------------------------------------------------*/
17361 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17362 ( NULL == pEventData->pEventData))
17363 {
17364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017365 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017368 }
17369
17370 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17371
17372 /*-------------------------------------------------------------------------
17373 Extract response and send it to UMAC
17374 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017375 wpalMemoryCopy( &halBASessionRsp,
17376 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017377 sizeof(halBASessionRsp));
17378
17379 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17380
Jeff Johnson43971f52012-07-17 12:26:56 -070017381 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017382 {
17383 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17384 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17385 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17386 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17387 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17388 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17389 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17390 }
17391
17392 /*Notify UMAC*/
17393 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17394
Jeff Johnsone7245742012-09-05 17:12:55 -070017395 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017396}/*WDI_ProcessAddSessionBARsp*/
17397
17398
17399/**
17400 @brief Process Del BA Rsp function (called when a response
17401 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017402
17403 @param pWDICtx: pointer to the WLAN DAL context
17404 pEventData: pointer to the event information structure
17405
Jeff Johnson295189b2012-06-20 16:38:30 -070017406 @see
17407 @return Result of the function call
17408*/
17409WDI_Status
17410WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017411(
Jeff Johnson295189b2012-06-20 16:38:30 -070017412 WDI_ControlBlockType* pWDICtx,
17413 WDI_EventInfoType* pEventData
17414)
17415{
17416 WDI_Status wdiStatus;
17417 eHalStatus halStatus;
17418 WDI_DelBARspCb wdiDelBARspCb;
17419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17420
17421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017422 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017423 -------------------------------------------------------------------------*/
17424 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17425 ( NULL == pEventData->pEventData))
17426 {
17427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017428 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017431 }
17432
17433 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17434
17435 /*-------------------------------------------------------------------------
17436 Extract response and send it to UMAC
17437 -------------------------------------------------------------------------*/
17438 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017440
17441 if ( eHAL_STATUS_SUCCESS == halStatus )
17442 {
17443 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17444 }
17445
17446 /*Notify UMAC*/
17447 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17448
Jeff Johnsone7245742012-09-05 17:12:55 -070017449 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017450}/*WDI_ProcessDelBARsp*/
17451
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017452#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017453/**
17454 @brief Process TSM Stats Rsp function (called when a response
17455 is being received over the bus from HAL)
17456
17457 @param pWDICtx: pointer to the WLAN DAL context
17458 pEventData: pointer to the event information structure
17459
17460 @see
17461 @return Result of the function call
17462*/
17463WDI_Status
17464WDI_ProcessTsmStatsRsp
17465(
17466 WDI_ControlBlockType* pWDICtx,
17467 WDI_EventInfoType* pEventData
17468)
17469{
17470 WDI_TsmRspCb wdiTsmStatsRspCb;
17471 tTsmStatsRspMsg halTsmStatsRspMsg;
17472 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17474
17475 /*-------------------------------------------------------------------------
17476 Sanity check
17477 -------------------------------------------------------------------------*/
17478 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17479 ( NULL == pEventData->pEventData))
17480 {
17481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017483 WDI_ASSERT(0);
17484 return WDI_STATUS_E_FAILURE;
17485 }
17486
17487 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17488
17489 /*-------------------------------------------------------------------------
17490 Unpack HAL Response Message - the header was already extracted by the
17491 main Response Handling procedure
17492 -------------------------------------------------------------------------*/
17493 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17494 pEventData->pEventData,
17495 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17496
17497 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17498 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17499 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17500 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17501 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17502 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17503 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17504 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17505 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17506 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17507 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17508 halTsmStatsRspMsg.tsmStatsRspParams.status);
17509
17510 /*Notify UMAC*/
17511 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17512
17513 return WDI_STATUS_SUCCESS;
17514}/*WDI_ProcessTsmStatsRsp*/
17515
17516#endif
17517
17518
17519
17520/**
17521 @brief Process Flush AC Rsp function (called when a response
17522 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017523
17524 @param pWDICtx: pointer to the WLAN DAL context
17525 pEventData: pointer to the event information structure
17526
Jeff Johnson295189b2012-06-20 16:38:30 -070017527 @see
17528 @return Result of the function call
17529*/
17530WDI_Status
17531WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017532(
Jeff Johnson295189b2012-06-20 16:38:30 -070017533 WDI_ControlBlockType* pWDICtx,
17534 WDI_EventInfoType* pEventData
17535)
17536{
17537 WDI_Status wdiStatus;
17538 eHalStatus halStatus;
17539 WDI_FlushAcRspCb wdiFlushAcRspCb;
17540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17541
17542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017543 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 -------------------------------------------------------------------------*/
17545 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17546 ( NULL == pEventData->pEventData))
17547 {
17548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017549 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017550 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017552 }
17553
17554 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17555
17556 /*-------------------------------------------------------------------------
17557 Extract response and send it to UMAC
17558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017559 wpalMemoryCopy( &halStatus,
17560 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017561 sizeof(halStatus));
17562
Jeff Johnsone7245742012-09-05 17:12:55 -070017563 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017564
17565 /*Notify UMAC*/
17566 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17567
Jeff Johnsone7245742012-09-05 17:12:55 -070017568 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017569}/*WDI_ProcessFlushAcRsp*/
17570
17571/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017572 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017573 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017574
17575 @param pWDICtx: pointer to the WLAN DAL context
17576 pEventData: pointer to the event information structure
17577
Jeff Johnson295189b2012-06-20 16:38:30 -070017578 @see
17579 @return Result of the function call
17580*/
17581WDI_Status
17582WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017583(
Jeff Johnson295189b2012-06-20 16:38:30 -070017584 WDI_ControlBlockType* pWDICtx,
17585 WDI_EventInfoType* pEventData
17586)
17587{
17588 WDI_Status wdiStatus;
17589 eHalStatus halStatus;
17590 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17592
17593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017594 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017595 -------------------------------------------------------------------------*/
17596 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17597 ( NULL == pEventData->pEventData))
17598 {
17599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017600 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017603 }
17604
17605 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17606
17607 /*-------------------------------------------------------------------------
17608 Extract response and send it to UMAC
17609 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017610 wpalMemoryCopy( &halStatus,
17611 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017612 sizeof(halStatus));
17613
Jeff Johnsone7245742012-09-05 17:12:55 -070017614 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017615
17616 /*Notify UMAC*/
17617 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17618
Jeff Johnsone7245742012-09-05 17:12:55 -070017619 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017620}/*WDI_ProcessBtAmpEventRsp*/
17621
17622
17623/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017624 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017625 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017626
17627 @param pWDICtx: pointer to the WLAN DAL context
17628 pEventData: pointer to the event information structure
17629
Jeff Johnson295189b2012-06-20 16:38:30 -070017630 @see
17631 @return Result of the function call
17632*/
17633WDI_Status
17634WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017635(
Jeff Johnson295189b2012-06-20 16:38:30 -070017636 WDI_ControlBlockType* pWDICtx,
17637 WDI_EventInfoType* pEventData
17638)
17639{
17640 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17641 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17642 tAddStaSelfRspMsg halAddStaSelfRsp;
17643 WDI_AddStaParams wdiAddSTAParam = {0};
17644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17645
17646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017648 -------------------------------------------------------------------------*/
17649 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17650 ( NULL == pEventData->pEventData))
17651 {
17652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017656 }
17657
Jeff Johnsone7245742012-09-05 17:12:55 -070017658 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017659 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17660
17661 /*-------------------------------------------------------------------------
17662 Extract response and send it to UMAC
17663 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017664 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17665 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017666 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17667
17668
Jeff Johnsone7245742012-09-05 17:12:55 -070017669 wdiAddSTASelfParams.wdiStatus =
17670 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017671
Jeff Johnsone7245742012-09-05 17:12:55 -070017672 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017673 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017674 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017675 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017676 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017677 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17678
17679 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17680 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17681 WDI_MAC_ADDR_LEN);
17682
17683
17684#ifdef HAL_SELF_STA_PER_BSS
17685
17686 /* At this point add the self-STA */
17687
17688 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17689 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17690 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17691
17692 //all DPU indices are the same for self STA
17693
17694 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017695 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017696 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17697 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17698 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17699 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17700 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17701
17702 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17703 WDI_MAC_ADDR_LEN);
17704
17705 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17706 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17707
Jeff Johnsone7245742012-09-05 17:12:55 -070017708 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017709 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17710 {
17711 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17712 }
17713#endif
17714
17715 /*Notify UMAC*/
17716 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17717
Jeff Johnsone7245742012-09-05 17:12:55 -070017718 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017719}/*WDI_ProcessAddSTASelfRsp*/
17720
17721
17722
17723/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017724 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017725 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017726
17727 @param pWDICtx: pointer to the WLAN DAL context
17728 pEventData: pointer to the event information structure
17729
Jeff Johnson295189b2012-06-20 16:38:30 -070017730 @see
17731 @return Result of the function call
17732*/
17733WDI_Status
17734WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017735(
Jeff Johnson295189b2012-06-20 16:38:30 -070017736 WDI_ControlBlockType* pWDICtx,
17737 WDI_EventInfoType* pEventData
17738)
17739{
17740 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17741 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17742 tDelStaSelfRspParams delStaSelfRspParams;
17743 wpt_uint8 ucStaIdx;
17744
17745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17746
17747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 -------------------------------------------------------------------------*/
17750 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17751 ( NULL == pEventData->pEventData))
17752 {
17753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017757 }
17758
17759 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17760
17761 /*-------------------------------------------------------------------------
17762 Extract response and send it to UMAC
17763 -------------------------------------------------------------------------*/
17764
Jeff Johnsone7245742012-09-05 17:12:55 -070017765 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017766 (wpt_uint8*)pEventData->pEventData,
17767 sizeof(tDelStaSelfRspParams));
17768
Jeff Johnsone7245742012-09-05 17:12:55 -070017769 wdiDelStaSelfRspParams.wdiStatus =
17770 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017771
Jeff Johnsone7245742012-09-05 17:12:55 -070017772 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017773 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17774 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17775 {
17776 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017777 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017778 delStaSelfRspParams.selfMacAddr,
17779 &ucStaIdx);
17780 if(WDI_STATUS_E_FAILURE == wdiStatus)
17781 {
17782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017783 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017786 }
17787 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17788 }
17789
17790 /*Notify UMAC*/
17791 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17792
17793 return WDI_STATUS_SUCCESS;
17794}
17795
Jeff Johnsone7245742012-09-05 17:12:55 -070017796#ifdef FEATURE_OEM_DATA_SUPPORT
17797/**
17798 @brief Start Oem Data Rsp function (called when a
17799 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017800
Jeff Johnsone7245742012-09-05 17:12:55 -070017801 @param pWDICtx: pointer to the WLAN DAL context
17802 pEventData: pointer to the event information structure
17803
17804 @see
17805 @return Result of the function call
17806*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017807
17808WDI_Status
17809WDI_ProcessStartOemDataRsp
17810(
17811 WDI_ControlBlockType* pWDICtx,
17812 WDI_EventInfoType* pEventData
17813)
17814{
17815 WDI_oemDataRspCb wdiOemDataRspCb;
17816 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17817 tStartOemDataRspParams* halStartOemDataRspParams;
17818
17819 /*-------------------------------------------------------------------------
17820 Sanity check
17821 -------------------------------------------------------------------------*/
17822 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17823 ( NULL == pEventData->pEventData))
17824 {
17825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017826 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017827 WDI_ASSERT(0);
17828 return WDI_STATUS_E_FAILURE;
17829 }
17830
17831 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17832
17833 /*-------------------------------------------------------------------------
17834 Extract response and send it to UMAC
17835 -------------------------------------------------------------------------*/
17836 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17837
17838
17839 //It is the responsibility of the application code to check for failure
17840 //conditions!
17841
17842 //Allocate memory for WDI OEM DATA RSP structure
17843 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17844
17845 if(NULL == wdiOemDataRspParams)
17846 {
17847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017848 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017849 pWDICtx, pEventData, pEventData->pEventData);
17850 WDI_ASSERT(0);
17851 return WDI_STATUS_E_FAILURE;
17852 }
17853
17854 /* Populate WDI structure members */
17855 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17856
17857 /*Notify UMAC*/
17858 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17859
17860 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17861 wpalMemoryFree(wdiOemDataRspParams);
17862
17863 return WDI_STATUS_SUCCESS;
17864}/*WDI_PrcoessStartOemDataRsp*/
17865#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017866
17867/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017868 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017869===========================================================================*/
17870
17871/**
17872 @brief Process Channel Switch Rsp function (called when a response
17873 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017874
17875 @param pWDICtx: pointer to the WLAN DAL context
17876 pEventData: pointer to the event information structure
17877
Jeff Johnson295189b2012-06-20 16:38:30 -070017878 @see
17879 @return Result of the function call
17880*/
17881WDI_Status
17882WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017883(
Jeff Johnson295189b2012-06-20 16:38:30 -070017884 WDI_ControlBlockType* pWDICtx,
17885 WDI_EventInfoType* pEventData
17886)
17887{
17888 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17889 WDI_SwitchChRspCb wdiChSwitchRspCb;
17890 tSwitchChannelRspParams halSwitchChannelRsp;
17891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17892
17893 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017894 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 -------------------------------------------------------------------------*/
17896 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17897 ( NULL == pEventData->pEventData))
17898 {
17899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017900 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017901 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017902 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017903 }
17904
17905 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17906
17907 /*-------------------------------------------------------------------------
17908 Extract response and send it to UMAC
17909 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017910 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017911 (wpt_uint8*)pEventData->pEventData,
17912 sizeof(halSwitchChannelRsp));
17913
Jeff Johnsone7245742012-09-05 17:12:55 -070017914 wdiSwitchChRsp.wdiStatus =
17915 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017916 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17917
17918#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017919 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017920#endif
17921
17922 /*Notify UMAC*/
17923 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17924
Jeff Johnsone7245742012-09-05 17:12:55 -070017925 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017926}/*WDI_ProcessChannelSwitchRsp*/
17927
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080017928/**
17929 @brief Process Channel Switch Rsp function (called when a response
17930 is being received over the bus from HAL against
17931 WDI_ProcessChannelSwitchReq_V1)
17932
17933 @param pWDICtx: pointer to the WLAN DAL context
17934 pEventData: pointer to the event information structure
17935
17936 @see
17937 @return Result of the function call
17938*/
17939
17940WDI_Status
17941WDI_ProcessChannelSwitchRsp_V1
17942(
17943 WDI_ControlBlockType* pWDICtx,
17944 WDI_EventInfoType* pEventData
17945)
17946{
17947 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
17948 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
17949 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
17950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17951
17952 /*-------------------------------------------------------------------------
17953 Sanity check
17954 -------------------------------------------------------------------------*/
17955 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17956 ( NULL == pEventData->pEventData))
17957 {
17958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17959 "%s: Invalid parameters", __func__);
17960 WDI_ASSERT(0);
17961 return WDI_STATUS_E_FAILURE;
17962 }
17963
17964 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
17965
17966 /*-------------------------------------------------------------------------
17967 Extract response and send it to UMAC
17968 -------------------------------------------------------------------------*/
17969 wpalMemoryCopy( &halSwitchChannelRsp,
17970 (wpt_uint8*)pEventData->pEventData,
17971 sizeof(halSwitchChannelRsp));
17972
17973 wdiSwitchChRsp.wdiStatus =
17974 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
17975 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17976
17977#ifdef WLAN_FEATURE_VOWIFI
17978 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
17979#endif
17980
17981 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
17982 if (( NULL == wdiChSwitchRspCb ) )
17983 {
17984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17985 "%s: ### Call back function is null", __func__);
17986 WDI_ASSERT(0);
17987 return WDI_STATUS_E_FAILURE;
17988 }
17989 /*Notify UMAC*/
17990 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17991
17992 return WDI_STATUS_SUCCESS;
17993}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017994
17995/**
17996 @brief Process Config STA Rsp function (called when a response
17997 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017998
17999 @param pWDICtx: pointer to the WLAN DAL context
18000 pEventData: pointer to the event information structure
18001
Jeff Johnson295189b2012-06-20 16:38:30 -070018002 @see
18003 @return Result of the function call
18004*/
18005WDI_Status
18006WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018007(
Jeff Johnson295189b2012-06-20 16:38:30 -070018008 WDI_ControlBlockType* pWDICtx,
18009 WDI_EventInfoType* pEventData
18010)
18011{
18012 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18013 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18014 WDI_AddStaParams wdiAddSTAParam;
18015
18016 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018017 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018018
Jeff Johnsone7245742012-09-05 17:12:55 -070018019 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18021
18022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 -------------------------------------------------------------------------*/
18025 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18026 ( NULL == pEventData->pEventData))
18027 {
18028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018032 }
18033
18034 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18035
18036 /*-------------------------------------------------------------------------
18037 Extract response and send it to UMAC
18038 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018039 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18040 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018041 sizeof(halConfigStaRsp.configStaRspParams));
18042
18043
18044 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18045 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18046 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18047 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18048 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18049
18050 /* MAC Address of STA - take from cache as it does not come back in the
18051 response*/
18052 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018053 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018054 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018055
18056 wdiCfgSTAParams.wdiStatus =
18057 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018058
18059 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18060 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18061 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18062
18063 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18064 {
18065 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18066 {
18067 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018068 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018069 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18070 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018071
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018073 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018074 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018075 wdiAddSTAParam.ucHTCapable =
18076 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18077 wdiAddSTAParam.ucStaType =
18078 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018079 wdiAddSTAParam.ucRmfEnabled =
18080 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018081
Jeff Johnson295189b2012-06-20 16:38:30 -070018082 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018083 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18084 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018085 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018086
18087 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18088 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18089 WDI_MAC_ADDR_LEN);
18090
18091 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18092 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18093 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018094
18095 if ( NULL == pBSSSes )
18096 {
18097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18098 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018099
Jeff Johnson295189b2012-06-20 16:38:30 -070018100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018101 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018102 }
18103
18104 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018105 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018106 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018107 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018108 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018109 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018110 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018111 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018112 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018113 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018114
Jeff Johnson295189b2012-06-20 16:38:30 -070018115 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18116 }
18117 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18118 {
18119 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18120
Jeff Johnsone7245742012-09-05 17:12:55 -070018121 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018122 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018123 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018124 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018125 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018126 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018127 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018128 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018129 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018130 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018131 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018132 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018133 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018134 halConfigStaRsp.configStaRspParams.ucUcastSig;
18135 }
18136 }
18137
18138 /*Notify UMAC*/
18139 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18140
Jeff Johnsone7245742012-09-05 17:12:55 -070018141 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018142}/*WDI_ProcessConfigStaRsp*/
18143
18144
18145/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018146 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018148
18149 @param pWDICtx: pointer to the WLAN DAL context
18150 pEventData: pointer to the event information structure
18151
Jeff Johnson295189b2012-06-20 16:38:30 -070018152 @see
18153 @return Result of the function call
18154*/
18155WDI_Status
18156WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018157(
Jeff Johnson295189b2012-06-20 16:38:30 -070018158 WDI_ControlBlockType* pWDICtx,
18159 WDI_EventInfoType* pEventData
18160)
18161{
18162 WDI_Status wdiStatus;
18163 eHalStatus halStatus;
18164 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18165
18166 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018167 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18169
18170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018172 -------------------------------------------------------------------------*/
18173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18174 ( NULL == pEventData->pEventData))
18175 {
18176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018180 }
18181
18182 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18183
18184 wpalMutexAcquire(&pWDICtx->wptMutex);
18185
18186 /*If the link is being transitioned to idle - the BSS is to be deleted
18187 - this type of ending a session is possible when UMAC has failed an
18188 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018189 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018190 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18191 {
18192 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018193 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018194 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018195 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18196 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18197 &pBSSSes);
18198
Jeff Johnson295189b2012-06-20 16:38:30 -070018199 /*-----------------------------------------------------------------------
18200 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018201 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018202 -----------------------------------------------------------------------*/
18203 if ( NULL == pBSSSes )
18204 {
18205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18206 "Set link response received outside association session");
18207 }
18208 else
18209 {
18210 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18211 will be del BSS coming after this to stop the beaconing & cleaning up the
18212 sessions*/
18213 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18214 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18215 {
18216 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018217 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018218 -----------------------------------------------------------------------*/
18219 WDI_DeleteSession(pWDICtx, pBSSSes);
18220
18221 /*-----------------------------------------------------------------------
18222 Check to see if this association is in progress - if so disable the
18223 flag as this has ended
18224 -----------------------------------------------------------------------*/
18225 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018226 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018227 /*Association no longer in progress */
18228 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18229 /*Association no longer in progress - prepare pending assoc for processing*/
18230 WDI_DequeueAssocRequest(pWDICtx);
18231 }
18232 }
18233 }
18234 }
18235 /* If the link state has been set to POST ASSOC, reset the "association in
18236 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018237 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18239 {
18240 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18241 WDI_DequeueAssocRequest(pWDICtx);
18242 }
18243
18244 wpalMutexRelease(&pWDICtx->wptMutex);
18245
18246 /*-------------------------------------------------------------------------
18247 Extract response and send it to UMAC
18248 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018249 wpalMemoryCopy( &halStatus,
18250 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 sizeof(halStatus));
18252
Jeff Johnsone7245742012-09-05 17:12:55 -070018253 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018254
18255 /*Notify UMAC*/
18256 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18257
Jeff Johnsone7245742012-09-05 17:12:55 -070018258 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018259}/*WDI_ProcessSetLinkStateRsp*/
18260
18261/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018262 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018263 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018264
18265 @param pWDICtx: pointer to the WLAN DAL context
18266 pEventData: pointer to the event information structure
18267
Jeff Johnson295189b2012-06-20 16:38:30 -070018268 @see
18269 @return Result of the function call
18270*/
18271WDI_Status
18272WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018273(
Jeff Johnson295189b2012-06-20 16:38:30 -070018274 WDI_ControlBlockType* pWDICtx,
18275 WDI_EventInfoType* pEventData
18276)
18277{
18278 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18279 WDI_GetStatsRspCb wdiGetStatsRspCb;
18280 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018281
Jeff Johnson295189b2012-06-20 16:38:30 -070018282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18283
18284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018286 -------------------------------------------------------------------------*/
18287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18288 ( NULL == pEventData->pEventData))
18289 {
18290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018294 }
18295
18296 /*-------------------------------------------------------------------------
18297 Extract response and send it to UMAC
18298 -------------------------------------------------------------------------*/
18299 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18300
18301 /*allocate the stats response buffer */
18302 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18303 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18304 + sizeof(WDI_GetStatsRspParamsType));
18305
18306 if(NULL == wdiGetStatsRsp)
18307 {
18308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018309 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018310 pWDICtx, pEventData, pEventData->pEventData);
18311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018313 }
18314
18315 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18316
18317 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18318 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18319 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18320 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18321 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18322 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18323
18324 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18325 wpalMemoryCopy(wdiGetStatsRsp + 1,
18326 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18327 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18328
18329 /*Notify UMAC*/
18330 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18331
18332 wpalMemoryFree(wdiGetStatsRsp);
18333
Jeff Johnsone7245742012-09-05 17:12:55 -070018334 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018335}/*WDI_ProcessGetStatsRsp*/
18336
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018337#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018338/**
18339 @brief Process Get Roam Rssi Rsp function (called when a response is
18340 being received over the bus from HAL)
18341
18342 @param pWDICtx: pointer to the WLAN DAL context
18343 pEventData: pointer to the event information structure
18344
18345 @see
18346 @return Result of the function call
18347*/
18348WDI_Status
18349WDI_ProcessGetRoamRssiRsp
18350(
18351 WDI_ControlBlockType* pWDICtx,
18352 WDI_EventInfoType* pEventData
18353)
18354{
18355 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18356 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18357 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18359
18360 /*-------------------------------------------------------------------------
18361 Sanity check
18362 -------------------------------------------------------------------------*/
18363 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18364 ( NULL == pEventData->pEventData))
18365 {
18366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18367 "%s: Invalid parameters", __func__);
18368 WDI_ASSERT(0);
18369 return WDI_STATUS_E_FAILURE;
18370 }
18371
18372 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18373 if(NULL == wdiGetRoamRssiRspCb)
18374 {
18375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18376 "%s: call back function is NULL", __func__);
18377 WDI_ASSERT(0);
18378 return WDI_STATUS_E_FAILURE;
18379 }
18380
18381 /*-------------------------------------------------------------------------
18382 Extract response and send it to UMAC
18383 -------------------------------------------------------------------------*/
18384 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18385 pEventData->pEventData,
18386 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18387
18388 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18389 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18390 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18391
18392 /*Notify UMAC*/
18393 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18394
18395 return WDI_STATUS_SUCCESS;
18396}/*WDI_ProcessGetRoamRssiRsp*/
18397#endif
18398
Jeff Johnson295189b2012-06-20 16:38:30 -070018399
18400/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018401 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018402 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018403
18404 @param pWDICtx: pointer to the WLAN DAL context
18405 pEventData: pointer to the event information structure
18406
Jeff Johnson295189b2012-06-20 16:38:30 -070018407 @see
18408 @return Result of the function call
18409*/
18410WDI_Status
18411WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018412(
Jeff Johnson295189b2012-06-20 16:38:30 -070018413 WDI_ControlBlockType* pWDICtx,
18414 WDI_EventInfoType* pEventData
18415)
18416{
18417 WDI_Status wdiStatus;
18418 eHalStatus halStatus;
18419 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18421
18422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018424 -------------------------------------------------------------------------*/
18425 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18426 ( NULL == pEventData->pEventData))
18427 {
18428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018429 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 }
18433
18434 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18435
18436 /*-------------------------------------------------------------------------
18437 Extract response and send it to UMAC
18438 -------------------------------------------------------------------------*/
18439 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018440 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018441
18442 /*Notify UMAC*/
18443 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18444
Jeff Johnsone7245742012-09-05 17:12:55 -070018445 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018446}/*WDI_ProcessUpdateCfgRsp*/
18447
18448
18449
18450/**
18451 @brief Process Add BA Rsp function (called when a response
18452 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018453
18454 @param pWDICtx: pointer to the WLAN DAL context
18455 pEventData: pointer to the event information structure
18456
Jeff Johnson295189b2012-06-20 16:38:30 -070018457 @see
18458 @return Result of the function call
18459*/
18460WDI_Status
18461WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018462(
Jeff Johnson295189b2012-06-20 16:38:30 -070018463 WDI_ControlBlockType* pWDICtx,
18464 WDI_EventInfoType* pEventData
18465)
18466{
18467 WDI_AddBARspCb wdiAddBARspCb;
18468
18469 tAddBARspParams halAddBARsp;
18470 WDI_AddBARspinfoType wdiAddBARsp;
18471
18472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18473
18474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018475 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018476 -------------------------------------------------------------------------*/
18477 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18478 ( NULL == pEventData->pEventData))
18479 {
18480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018481 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018484 }
18485
18486 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18487
18488 /*-------------------------------------------------------------------------
18489 Extract response and send it to UMAC
18490 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018491 wpalMemoryCopy( &halAddBARsp,
18492 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018493 sizeof(halAddBARsp));
18494
18495 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18496
Jeff Johnson43971f52012-07-17 12:26:56 -070018497 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018498 {
18499 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18500 }
18501
18502 /*Notify UMAC*/
18503 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18504
Jeff Johnsone7245742012-09-05 17:12:55 -070018505 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018506}/*WDI_ProcessAddSessionBARsp*/
18507
18508/**
18509 @brief Process Add BA Rsp function (called when a response
18510 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018511
18512 @param pWDICtx: pointer to the WLAN DAL context
18513 pEventData: pointer to the event information structure
18514
Jeff Johnson295189b2012-06-20 16:38:30 -070018515 @see
18516 @return Result of the function call
18517*/
18518WDI_Status
18519WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018520(
Jeff Johnson295189b2012-06-20 16:38:30 -070018521 WDI_ControlBlockType* pWDICtx,
18522 WDI_EventInfoType* pEventData
18523)
18524{
18525 WDI_TriggerBARspCb wdiTriggerBARspCb;
18526
18527 tTriggerBARspParams* halTriggerBARsp;
18528 tTriggerBaRspCandidate* halBaCandidate;
18529 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18530 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18531 wpt_uint16 index;
18532 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018533 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18535
18536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018538 -------------------------------------------------------------------------*/
18539 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18540 ( NULL == pEventData->pEventData))
18541 {
18542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018546 }
18547
18548 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18549
18550 /*-------------------------------------------------------------------------
18551 Extract response and send it to UMAC
18552 -------------------------------------------------------------------------*/
18553 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18554
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018555 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18556
18557 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18558 {
18559 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018560 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018561 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018562
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018563 if(NULL == wdiTriggerBARsp)
18564 {
18565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018566 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018567 pWDICtx, pEventData, pEventData->pEventData);
18568 WDI_ASSERT(0);
18569 return WDI_STATUS_E_FAILURE;
18570 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018571
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018572 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18573
Jeff Johnson295189b2012-06-20 16:38:30 -070018574 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018575 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18577
18578 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18579 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18580
18581 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18582 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018583 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018584 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18585 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18586 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018587 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018588 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018589 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018590 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18591 }
18592 wdiTriggerBARspCandidate++;
18593 halBaCandidate++;
18594 }
18595 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018596 else
18597 {
18598 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18599
18600 if(NULL == wdiTriggerBARsp)
18601 {
18602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018603 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018604 pWDICtx, pEventData, pEventData->pEventData);
18605 WDI_ASSERT(0);
18606 return WDI_STATUS_E_FAILURE;
18607 }
18608
18609 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18610
18611 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018612
18613 /*Notify UMAC*/
18614 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18615
18616 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018617 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018618}/*WDI_ProcessAddSessionBARsp*/
18619
18620/**
18621 @brief Process Update Beacon Params Rsp function (called when a response
18622 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018623
18624 @param pWDICtx: pointer to the WLAN DAL context
18625 pEventData: pointer to the event information structure
18626
Jeff Johnson295189b2012-06-20 16:38:30 -070018627 @see
18628 @return Result of the function call
18629*/
18630WDI_Status
18631WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018632(
Jeff Johnson295189b2012-06-20 16:38:30 -070018633 WDI_ControlBlockType* pWDICtx,
18634 WDI_EventInfoType* pEventData
18635)
18636{
18637 WDI_Status wdiStatus;
18638 eHalStatus halStatus;
18639 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18641
18642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018643 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018644 -------------------------------------------------------------------------*/
18645 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18646 ( NULL == pEventData->pEventData))
18647 {
18648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018649 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018652 }
18653
18654 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18655
18656 /*-------------------------------------------------------------------------
18657 Extract response and send it to UMAC
18658 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018659 wpalMemoryCopy( &halStatus,
18660 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018661 sizeof(halStatus));
18662
Jeff Johnsone7245742012-09-05 17:12:55 -070018663 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018664
18665 /*Notify UMAC*/
18666 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18667
Jeff Johnsone7245742012-09-05 17:12:55 -070018668 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018669}/*WDI_ProcessUpdateBeaconParamsRsp*/
18670
18671/**
18672 @brief Process Send Beacon template Rsp function (called when a response
18673 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018674
18675 @param pWDICtx: pointer to the WLAN DAL context
18676 pEventData: pointer to the event information structure
18677
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 @see
18679 @return Result of the function call
18680*/
18681WDI_Status
18682WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018683(
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 WDI_ControlBlockType* pWDICtx,
18685 WDI_EventInfoType* pEventData
18686)
18687{
18688 WDI_Status wdiStatus;
18689 eHalStatus halStatus;
18690 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18692
18693 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018694 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 -------------------------------------------------------------------------*/
18696 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18697 ( NULL == pEventData->pEventData))
18698 {
18699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018700 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018703 }
18704
18705 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18706
18707 /*-------------------------------------------------------------------------
18708 Extract response and send it to UMAC
18709 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018710 wpalMemoryCopy( &halStatus,
18711 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018712 sizeof(halStatus));
18713
Jeff Johnsone7245742012-09-05 17:12:55 -070018714 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018715
18716 /*Notify UMAC*/
18717 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18718
Jeff Johnsone7245742012-09-05 17:12:55 -070018719 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018720}/*WDI_ProcessSendBeaconParamsRsp*/
18721
Jeff Johnsone7245742012-09-05 17:12:55 -070018722
Jeff Johnson295189b2012-06-20 16:38:30 -070018723/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018724 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018725 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018726
18727 @param pWDICtx: pointer to the WLAN DAL context
18728 pEventData: pointer to the event information structure
18729
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 @see
18731 @return Result of the function call
18732*/
18733WDI_Status
18734WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018735(
Jeff Johnson295189b2012-06-20 16:38:30 -070018736 WDI_ControlBlockType* pWDICtx,
18737 WDI_EventInfoType* pEventData
18738)
18739{
18740 WDI_Status wdiStatus;
18741 eHalStatus halStatus;
18742 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18744
18745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018746 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018747 -------------------------------------------------------------------------*/
18748 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18749 ( NULL == pEventData->pEventData))
18750 {
18751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018752 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018755 }
18756
18757 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18758
18759 /*-------------------------------------------------------------------------
18760 Extract response and send it to UMAC
18761 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018762 wpalMemoryCopy( &halStatus,
18763 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018764 sizeof(halStatus));
18765
Jeff Johnsone7245742012-09-05 17:12:55 -070018766 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018767
18768 /*Notify UMAC*/
18769 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18770
Jeff Johnsone7245742012-09-05 17:12:55 -070018771 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018772}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18773
18774 /**
18775 @brief Process Set Max Tx Power Rsp function (called when a response
18776 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018777
18778 @param pWDICtx: pointer to the WLAN DAL context
18779 pEventData: pointer to the event information structure
18780
Jeff Johnson295189b2012-06-20 16:38:30 -070018781 @see
18782 @return Result of the function call
18783*/
18784WDI_Status
18785WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018786(
Jeff Johnson295189b2012-06-20 16:38:30 -070018787 WDI_ControlBlockType* pWDICtx,
18788 WDI_EventInfoType* pEventData
18789)
18790{
18791 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018792
Jeff Johnson295189b2012-06-20 16:38:30 -070018793 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018794
Jeff Johnson295189b2012-06-20 16:38:30 -070018795 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18797
18798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018800 -------------------------------------------------------------------------*/
18801 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18802 ( NULL == pEventData->pEventData))
18803 {
18804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018805 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018808 }
18809
18810 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18811
18812 /*-------------------------------------------------------------------------
18813 Extract response and send it to UMAC
18814 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018815 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18816 pEventData->pEventData,
18817 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018818
18819 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18820 {
18821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18822 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018824 }
18825
Jeff Johnsone7245742012-09-05 17:12:55 -070018826 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018827 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018828 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018829
18830 /*Notify UMAC*/
18831 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18832
Jeff Johnsone7245742012-09-05 17:12:55 -070018833 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018834}
18835
schang86c22c42013-03-13 18:41:24 -070018836 /**
18837 @brief Process Set Tx Power Rsp function (called when a response
18838 is being received over the bus from HAL)
18839
18840 @param pWDICtx: pointer to the WLAN DAL context
18841 pEventData: pointer to the event information structure
18842
18843 @see
18844 @return Result of the function call
18845*/
18846WDI_Status
18847WDI_ProcessSetTxPowerRsp
18848(
18849 WDI_ControlBlockType* pWDICtx,
18850 WDI_EventInfoType* pEventData
18851)
18852{
18853 tSetTxPwrRspMsg halTxpowerrsp;
18854 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18855 WDA_SetTxPowerRspCb wdiReqStatusCb;
18856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18857
18858 /*-------------------------------------------------------------------------
18859 Sanity check
18860 -------------------------------------------------------------------------*/
18861 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18862 ( NULL == pEventData->pEventData))
18863 {
18864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18865 "%s: Invalid parameters", __func__);
18866 WDI_ASSERT(0);
18867 return WDI_STATUS_E_FAILURE;
18868 }
18869
18870 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18871
18872 /*-------------------------------------------------------------------------
18873 Extract response and send it to UMAC
18874 -------------------------------------------------------------------------*/
18875 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18876 pEventData->pEventData,
18877 sizeof(halTxpowerrsp.setTxPwrRspParams));
18878
18879 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18880 {
18881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18882 "Error status returned in Set Tx Power Response ");
18883 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18884 return WDI_STATUS_E_FAILURE;
18885 }
18886
18887 wdiSetTxPowerRspMsg.wdiStatus =
18888 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18889
18890 /*Notify UMAC*/
18891 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18892
18893 return WDI_STATUS_SUCCESS;
18894}
Arif Hussain935a8fb2014-01-31 12:12:28 -080018895
18896/**
18897 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
18898 is being received over the bus from HAL)
18899
18900 @param pWDICtx: pointer to the WLAN DAL context
18901 pEventData: pointer to the event information structure
18902
18903 @see
18904 @return Result of the function call
18905*/
18906WDI_Status
18907WDI_ProcessSetMaxTxPowerPerBandRsp
18908(
18909 WDI_ControlBlockType* pWDICtx,
18910 WDI_EventInfoType* pEventData
18911)
18912{
18913 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
18914 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
18915 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
18916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18917
18918 /*-------------------------------------------------------------------------
18919 Sanity check
18920 -------------------------------------------------------------------------*/
18921 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18922 ( NULL == pEventData->pEventData))
18923 {
18924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18925 "%s: Invalid parameters", __func__);
18926 WDI_ASSERT(0);
18927 return WDI_STATUS_E_FAILURE;
18928 }
18929
18930 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
18931
18932 /*-------------------------------------------------------------------------
18933 Extract response and send it to UMAC
18934 -------------------------------------------------------------------------*/
18935 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
18936 pEventData->pEventData,
18937 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
18938
18939 if (eHAL_STATUS_SUCCESS !=
18940 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
18941 {
18942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18943 "Error status returned in Set Max Tx Power Per Band Response");
18944 return WDI_STATUS_E_FAILURE;
18945 }
18946
18947 wdiSetTxPowerPerBandRspMsg.wdiStatus =
18948 WDI_HAL_2_WDI_STATUS(
18949 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
18950
18951 /* Notify UMAC */
18952 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
18953
18954 return WDI_STATUS_SUCCESS;
18955}
18956
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018957#ifdef FEATURE_WLAN_TDLS
18958/**
18959 @brief Process TDLS Link Establish Rsp function (called
18960 when a response is being received over the bus from HAL)
18961
18962 @param pWDICtx: pointer to the WLAN DAL context
18963 pEventData: pointer to the event information structure
18964
18965 @see
18966 @return Result of the function call
18967*/
18968WDI_Status
18969WDI_ProcessLinkEstablishReqRsp
18970(
18971 WDI_ControlBlockType* pWDICtx,
18972 WDI_EventInfoType* pEventData
18973)
18974{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018975 eHalStatus halStatus;
18976 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018977 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18978 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18979
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18981
18982 /*-------------------------------------------------------------------------
18983 Sanity check
18984 -------------------------------------------------------------------------*/
18985 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18986 ( NULL == pEventData->pEventData))
18987 {
18988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18989 "%s: Invalid parameters", __func__);
18990 WDI_ASSERT(0);
18991 return WDI_STATUS_E_FAILURE;
18992 }
18993
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018994 /*-------------------------------------------------------------------------
18995 Extract indication and send it to UMAC
18996 -------------------------------------------------------------------------*/
18997 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18998 pEventData->pEventData,
18999 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19000
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019001 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19002
19003 /*-------------------------------------------------------------------------
19004 Extract response and send it to UMAC
19005 -------------------------------------------------------------------------*/
19006 wpalMemoryCopy( &halStatus,
19007 pEventData->pEventData,
19008 sizeof(halStatus));
19009
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019010 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19011 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019012
19013 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019014 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019015
19016 return WDI_STATUS_SUCCESS;
19017}/*WDI_ProcessLinkEstablishReqRsp*/
19018#endif
schang86c22c42013-03-13 18:41:24 -070019019
Jeff Johnson295189b2012-06-20 16:38:30 -070019020/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019021 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019022 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019023
19024 @param pWDICtx: pointer to the WLAN DAL context
19025 pEventData: pointer to the event information structure
19026
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 @see
19028 @return Result of the function call
19029*/
19030WDI_Status
19031WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019032(
Jeff Johnson295189b2012-06-20 16:38:30 -070019033 WDI_ControlBlockType* pWDICtx,
19034 WDI_EventInfoType* pEventData
19035)
19036{
19037 WDI_Status wdiStatus;
19038 eHalStatus halStatus;
19039 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19041
19042 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019043 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019044 -------------------------------------------------------------------------*/
19045 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19046 ( NULL == pEventData->pEventData))
19047 {
19048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019049 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019052 }
19053
19054 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19055
19056 /*-------------------------------------------------------------------------
19057 Extract response and send it to UMAC
19058 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019059 wpalMemoryCopy( &halStatus,
19060 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 sizeof(halStatus));
19062
Jeff Johnsone7245742012-09-05 17:12:55 -070019063 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019064
19065 /*Notify UMAC*/
19066 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19067
Jeff Johnsone7245742012-09-05 17:12:55 -070019068 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019069}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019070/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019071 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019072 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019073
19074 @param pWDICtx: pointer to the WLAN DAL context
19075 pEventData: pointer to the event information structure
19076
Jeff Johnson295189b2012-06-20 16:38:30 -070019077 @see
19078 @return Result of the function call
19079*/
19080WDI_Status
19081WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019082(
Jeff Johnson295189b2012-06-20 16:38:30 -070019083 WDI_ControlBlockType* pWDICtx,
19084 WDI_EventInfoType* pEventData
19085)
19086{
19087 WDI_Status wdiStatus;
19088 eHalStatus halStatus;
19089 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019090 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19092
19093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019094 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 -------------------------------------------------------------------------*/
19096 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19097 ( NULL == pEventData->pEventData))
19098 {
19099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019100 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019103 }
19104
19105 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19106
19107 /*-------------------------------------------------------------------------
19108 Extract response and send it to UMAC
19109 -------------------------------------------------------------------------*/
19110 halStatus = *((eHalStatus*)pEventData->pEventData);
19111
Jeff Johnsone7245742012-09-05 17:12:55 -070019112 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019113
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019114 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19115 * Other module states are taken care by PMC.
19116 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19117 */
19118 if (wdiStatus != WDI_STATUS_SUCCESS) {
19119
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19121 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19122 halStatus);
19123 /* Call Back is not required as we are putting the DXE in FULL
19124 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019125 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19126
19127 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019129 "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 -080019130 WDI_ASSERT(0);
19131 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019132 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019133 /*Notify UMAC*/
19134 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19135
Jeff Johnsone7245742012-09-05 17:12:55 -070019136 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019137}/*WDI_ProcessEnterImpsRsp*/
19138
19139/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019140 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019141 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019142
19143 @param pWDICtx: pointer to the WLAN DAL context
19144 pEventData: pointer to the event information structure
19145
Jeff Johnson295189b2012-06-20 16:38:30 -070019146 @see
19147 @return Result of the function call
19148*/
19149WDI_Status
19150WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019151(
Jeff Johnson295189b2012-06-20 16:38:30 -070019152 WDI_ControlBlockType* pWDICtx,
19153 WDI_EventInfoType* pEventData
19154)
19155{
19156 WDI_Status wdiStatus;
19157 eHalStatus halStatus;
19158 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019159 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19161
19162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019164 -------------------------------------------------------------------------*/
19165 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19166 ( NULL == pEventData->pEventData))
19167 {
19168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019172 }
19173
19174 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19175
19176 /*-------------------------------------------------------------------------
19177 Extract response and send it to UMAC
19178 -------------------------------------------------------------------------*/
19179 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019180 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019181
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019182 if (halStatus != eHAL_STATUS_SUCCESS)
19183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19184 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19185
Jeff Johnson295189b2012-06-20 16:38:30 -070019186 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019187 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19188 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19189 {
19190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019191 "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 -080019192 WDI_ASSERT(0);
19193 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019194 /*Notify UMAC*/
19195 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19196
Jeff Johnsone7245742012-09-05 17:12:55 -070019197 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019198}/*WDI_ProcessExitImpsRsp*/
19199
19200/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019201 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019202 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019203
19204 @param pWDICtx: pointer to the WLAN DAL context
19205 pEventData: pointer to the event information structure
19206
Jeff Johnson295189b2012-06-20 16:38:30 -070019207 @see
19208 @return Result of the function call
19209*/
19210WDI_Status
19211WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019212(
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 WDI_ControlBlockType* pWDICtx,
19214 WDI_EventInfoType* pEventData
19215)
19216{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019217 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19218 tHalEnterBmpsRspParams halEnterBmpsRsp;
19219 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19220 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019221 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19223
19224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019225 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019226 -------------------------------------------------------------------------*/
19227 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19228 ( NULL == pEventData->pEventData))
19229 {
19230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019231 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019232 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019234 }
19235
Jeff Johnson295189b2012-06-20 16:38:30 -070019236 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019237 Extract response and send it to UMAC
19238 -------------------------------------------------------------------------*/
19239 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19240 {
19241 wpalMemoryCopy( &halEnterBmpsRsp,
19242 pEventData->pEventData,
19243 sizeof(halEnterBmpsRsp));
19244
19245 //Used to print debug message
19246 halStatus = halEnterBmpsRsp.status;
19247 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19248 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19249 }
19250 else
19251 {
19252 halStatus = *((eHalStatus*)pEventData->pEventData);
19253 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19254 }
19255
19256 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019257
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019258 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19259 * Other module states are taken care by PMC.
19260 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19261 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019262 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19263 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019264
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019266 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19267 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019268 /* Call Back is not required as we are putting the DXE in FULL
19269 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019270 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19271 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19272 {
19273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019274 "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 -080019275 WDI_ASSERT(0);
19276 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019277 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019278 }
19279
Jeff Johnson295189b2012-06-20 16:38:30 -070019280 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019281 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019282
Jeff Johnsone7245742012-09-05 17:12:55 -070019283 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019284}/*WDI_ProcessEnterBmpsRsp*/
19285
19286/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019287 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019288 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019289
19290 @param pWDICtx: pointer to the WLAN DAL context
19291 pEventData: pointer to the event information structure
19292
Jeff Johnson295189b2012-06-20 16:38:30 -070019293 @see
19294 @return Result of the function call
19295*/
19296WDI_Status
19297WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019298(
Jeff Johnson295189b2012-06-20 16:38:30 -070019299 WDI_ControlBlockType* pWDICtx,
19300 WDI_EventInfoType* pEventData
19301)
19302{
Jeff Johnson295189b2012-06-20 16:38:30 -070019303 eHalStatus halStatus;
19304 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019305 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019306 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19307 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19309
19310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019312 -------------------------------------------------------------------------*/
19313 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19314 ( NULL == pEventData->pEventData))
19315 {
19316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019317 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019320 }
19321
19322 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19323
19324 /*-------------------------------------------------------------------------
19325 Extract response and send it to UMAC
19326 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019327
19328 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19329 {
19330 wpalMemoryCopy( &halExitBmpsRsp,
19331 pEventData->pEventData,
19332 sizeof(halExitBmpsRsp));
19333
19334 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19335 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19336 }
19337 else
19338 {
19339 halStatus = *((eHalStatus*)pEventData->pEventData);
19340 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19341 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019342
19343 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019344 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19345 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19346 {
19347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019348 "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 -080019349 WDI_ASSERT(0);
19350 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019351 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19352
19353 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019354 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019355
Jeff Johnsone7245742012-09-05 17:12:55 -070019356 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019357}/*WDI_ProcessExitBmpsRsp*/
19358
19359/**
19360 @brief Process Enter UAPSD Rsp function (called when a response
19361 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019362
19363 @param pWDICtx: pointer to the WLAN DAL context
19364 pEventData: pointer to the event information structure
19365
Jeff Johnson295189b2012-06-20 16:38:30 -070019366 @see
19367 @return Result of the function call
19368*/
19369WDI_Status
19370WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019371(
Jeff Johnson295189b2012-06-20 16:38:30 -070019372 WDI_ControlBlockType* pWDICtx,
19373 WDI_EventInfoType* pEventData
19374)
19375{
Jeff Johnson295189b2012-06-20 16:38:30 -070019376 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019377 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019378 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019379 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19380
Jeff Johnson295189b2012-06-20 16:38:30 -070019381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19382
19383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019384 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019385 -------------------------------------------------------------------------*/
19386 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19387 ( NULL == pEventData->pEventData))
19388 {
19389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019390 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019393 }
19394
19395 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19396
19397 /*-------------------------------------------------------------------------
19398 Extract response and send it to UMAC
19399 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019400 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19401 {
19402 wpalMemoryCopy( &halEnterUapsdRsp,
19403 pEventData->pEventData,
19404 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019405
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019406 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19407 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19408 }
19409 else
19410 {
19411 halStatus = *((eHalStatus*)pEventData->pEventData);
19412 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19413 }
19414
19415 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019416 {
19417 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19418 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19419 // the traffic to decide when to suspend the trigger frames when there is no traffic
19420 // activity on the trigger enabled ACs
19421 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19422
19423#ifdef WLAN_PERF
19424 // Increment the BD signature to refresh the fast path BD utilization
19425 pWDICtx->uBdSigSerialNum++;
19426#endif
19427 }
19428
19429 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019430 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019431
Jeff Johnsone7245742012-09-05 17:12:55 -070019432 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019433}/*WDI_ProcessEnterUapsdRsp*/
19434
19435/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019436 @brief Process Exit UAPSD 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_ProcessExitUapsdRsp
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{
Jeff Johnson295189b2012-06-20 16:38:30 -070019452 eHalStatus halStatus;
19453 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019454 tHalExitUapsdRspParams halExitUapsdRsp;
19455 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19457
19458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019460 -------------------------------------------------------------------------*/
19461 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19462 ( NULL == pEventData->pEventData))
19463 {
19464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019468 }
19469
19470 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19471
19472 /*-------------------------------------------------------------------------
19473 Extract response and send it to UMAC
19474 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019475 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19476 {
19477 wpalMemoryCopy( &halExitUapsdRsp,
19478 pEventData->pEventData,
19479 sizeof(halExitUapsdRsp));
19480
19481 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19482 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19483 }
19484 else
19485 {
19486 halStatus = *((eHalStatus*)pEventData->pEventData);
19487 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19488 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019489 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19490 // directly instead of the FW WQ.
19491 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19492
19493#ifdef WLAN_PERF
19494 // Increment the BD signature to refresh the fast path BD utilization
19495 pWDICtx->uBdSigSerialNum++;
19496#endif
19497
19498 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019499 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019500
Jeff Johnsone7245742012-09-05 17:12:55 -070019501 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019502}/*WDI_ProcessExitUapsdRsp*/
19503
19504/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019505 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019506 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019507
19508 @param pWDICtx: pointer to the WLAN DAL context
19509 pEventData: pointer to the event information structure
19510
Jeff Johnson295189b2012-06-20 16:38:30 -070019511 @see
19512 @return Result of the function call
19513*/
19514WDI_Status
19515WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019516(
Jeff Johnson295189b2012-06-20 16:38:30 -070019517 WDI_ControlBlockType* pWDICtx,
19518 WDI_EventInfoType* pEventData
19519)
19520{
19521 WDI_Status wdiStatus;
19522 eHalStatus halStatus;
19523 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
19524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19525
19526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019528 -------------------------------------------------------------------------*/
19529 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19530 ( NULL == pEventData->pEventData))
19531 {
19532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019536 }
19537
19538 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
19539
19540 /*-------------------------------------------------------------------------
19541 Extract response and send it to UMAC
19542 -------------------------------------------------------------------------*/
19543 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019544 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019545
19546 /*Notify UMAC*/
19547 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19548
Jeff Johnsone7245742012-09-05 17:12:55 -070019549 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019550}/*WDI_ProcessSetUapsdAcParamsRsp*/
19551
19552/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019553 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019554 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019555
19556 @param pWDICtx: pointer to the WLAN DAL context
19557 pEventData: pointer to the event information structure
19558
Jeff Johnson295189b2012-06-20 16:38:30 -070019559 @see
19560 @return Result of the function call
19561*/
19562WDI_Status
19563WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019564(
Jeff Johnson295189b2012-06-20 16:38:30 -070019565 WDI_ControlBlockType* pWDICtx,
19566 WDI_EventInfoType* pEventData
19567)
19568{
19569 WDI_Status wdiStatus;
19570 eHalStatus halStatus;
19571 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19572 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19573
19574 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019575 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019576 -------------------------------------------------------------------------*/
19577 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19578 ( NULL == pEventData->pEventData))
19579 {
19580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019581 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019584 }
19585
19586 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19587
19588 /*-------------------------------------------------------------------------
19589 Extract response and send it to UMAC
19590 -------------------------------------------------------------------------*/
19591 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019592 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019593
19594 /*Notify UMAC*/
19595 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19596
Jeff Johnsone7245742012-09-05 17:12:55 -070019597 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019598}/*WDI_ProcessUpdateUapsdParamsRsp*/
19599
19600/**
19601 @brief Process Configure RXP filter Rsp function (called when a
19602 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019603
19604 @param pWDICtx: pointer to the WLAN DAL context
19605 pEventData: pointer to the event information structure
19606
Jeff Johnson295189b2012-06-20 16:38:30 -070019607 @see
19608 @return Result of the function call
19609*/
19610WDI_Status
19611WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019612(
Jeff Johnson295189b2012-06-20 16:38:30 -070019613 WDI_ControlBlockType* pWDICtx,
19614 WDI_EventInfoType* pEventData
19615)
19616{
19617 WDI_Status wdiStatus;
19618 eHalStatus halStatus;
19619 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19621
19622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019624 -------------------------------------------------------------------------*/
19625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19626 ( NULL == pEventData->pEventData))
19627 {
19628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 }
19633
19634 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19635
19636 /*-------------------------------------------------------------------------
19637 Extract response and send it to UMAC
19638 -------------------------------------------------------------------------*/
19639 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019640 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019641
19642 /*Notify UMAC*/
19643 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19644
Jeff Johnsone7245742012-09-05 17:12:55 -070019645 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019646}/*WDI_ProcessConfigureRxpFilterRsp*/
19647
19648/**
19649 @brief Process Set beacon filter Rsp function (called when a
19650 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019651
19652 @param pWDICtx: pointer to the WLAN DAL context
19653 pEventData: pointer to the event information structure
19654
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 @see
19656 @return Result of the function call
19657*/
19658WDI_Status
19659WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019660(
Jeff Johnson295189b2012-06-20 16:38:30 -070019661 WDI_ControlBlockType* pWDICtx,
19662 WDI_EventInfoType* pEventData
19663)
19664{
19665 WDI_Status wdiStatus;
19666 eHalStatus halStatus;
19667 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19669
19670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019672 -------------------------------------------------------------------------*/
19673 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19674 ( NULL == pEventData->pEventData))
19675 {
19676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 }
19681
19682 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19683
19684 /*-------------------------------------------------------------------------
19685 Extract response and send it to UMAC
19686 -------------------------------------------------------------------------*/
19687 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019688 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019689
19690 /*Notify UMAC*/
19691 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19692
Jeff Johnsone7245742012-09-05 17:12:55 -070019693 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019694}/*WDI_ProcessSetBeaconFilterRsp*/
19695
19696/**
19697 @brief Process remove beacon filter Rsp function (called when a
19698 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019699
19700 @param pWDICtx: pointer to the WLAN DAL context
19701 pEventData: pointer to the event information structure
19702
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 @see
19704 @return Result of the function call
19705*/
19706WDI_Status
19707WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019708(
Jeff Johnson295189b2012-06-20 16:38:30 -070019709 WDI_ControlBlockType* pWDICtx,
19710 WDI_EventInfoType* pEventData
19711)
19712{
19713 WDI_Status wdiStatus;
19714 eHalStatus halStatus;
19715 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19717
19718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 -------------------------------------------------------------------------*/
19721 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19722 ( NULL == pEventData->pEventData))
19723 {
19724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019728 }
19729
19730 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19731
19732 /*-------------------------------------------------------------------------
19733 Extract response and send it to UMAC
19734 -------------------------------------------------------------------------*/
19735 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019736 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019737
19738 /*Notify UMAC*/
19739 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19740
Jeff Johnsone7245742012-09-05 17:12:55 -070019741 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019742}/*WDI_ProcessRemBeaconFilterRsp*/
19743
19744/**
19745 @brief Process set RSSI thresholds Rsp function (called when a
19746 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019747
19748 @param pWDICtx: pointer to the WLAN DAL context
19749 pEventData: pointer to the event information structure
19750
Jeff Johnson295189b2012-06-20 16:38:30 -070019751 @see
19752 @return Result of the function call
19753*/
19754WDI_Status
19755WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019756(
Jeff Johnson295189b2012-06-20 16:38:30 -070019757 WDI_ControlBlockType* pWDICtx,
19758 WDI_EventInfoType* pEventData
19759)
19760{
19761 WDI_Status wdiStatus;
19762 eHalStatus halStatus;
19763 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19765
19766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019768 -------------------------------------------------------------------------*/
19769 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19770 ( NULL == pEventData->pEventData))
19771 {
19772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019773 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019774 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019775 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019776 }
19777
19778 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19779
19780 /*-------------------------------------------------------------------------
19781 Extract response and send it to UMAC
19782 -------------------------------------------------------------------------*/
19783 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019784 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019785
19786 /*Notify UMAC*/
19787 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19788
Jeff Johnsone7245742012-09-05 17:12:55 -070019789 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019790}/*WDI_ProcessSetRSSIThresoldsRsp*/
19791
19792/**
19793 @brief Process host offload Rsp function (called when a
19794 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019795
19796 @param pWDICtx: pointer to the WLAN DAL context
19797 pEventData: pointer to the event information structure
19798
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 @see
19800 @return Result of the function call
19801*/
19802WDI_Status
19803WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019804(
Jeff Johnson295189b2012-06-20 16:38:30 -070019805 WDI_ControlBlockType* pWDICtx,
19806 WDI_EventInfoType* pEventData
19807)
19808{
19809 WDI_Status wdiStatus;
19810 eHalStatus halStatus;
19811 WDI_HostOffloadCb wdiHostOffloadCb;
19812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19813
19814 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019815 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019816 -------------------------------------------------------------------------*/
19817 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19818 ( NULL == pEventData->pEventData))
19819 {
19820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019821 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019824 }
19825
19826 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19827
19828 /*-------------------------------------------------------------------------
19829 Extract response and send it to UMAC
19830 -------------------------------------------------------------------------*/
19831 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019832 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019833
19834 /*Notify UMAC*/
19835 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19836
Jeff Johnsone7245742012-09-05 17:12:55 -070019837 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019838}/*WDI_ProcessHostOffloadRsp*/
19839
19840/**
19841 @brief Process keep alive Rsp function (called when a
19842 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019843
19844 @param pWDICtx: pointer to the WLAN DAL context
19845 pEventData: pointer to the event information structure
19846
Jeff Johnson295189b2012-06-20 16:38:30 -070019847 @see
19848 @return Result of the function call
19849*/
19850WDI_Status
19851WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019852(
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 WDI_ControlBlockType* pWDICtx,
19854 WDI_EventInfoType* pEventData
19855)
19856{
19857 WDI_Status wdiStatus;
19858 eHalStatus halStatus;
19859 WDI_KeepAliveCb wdiKeepAliveCb;
19860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19862 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19863
19864
19865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019867 -------------------------------------------------------------------------*/
19868 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19869 ( NULL == pEventData->pEventData))
19870 {
19871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019875 }
19876
Jeff Johnsone7245742012-09-05 17:12:55 -070019877 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19878
Jeff Johnson295189b2012-06-20 16:38:30 -070019879 /*-------------------------------------------------------------------------
19880 Extract response and send it to UMAC
19881 -------------------------------------------------------------------------*/
19882 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019883 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019884
19885 /*Notify UMAC*/
19886 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19887
Jeff Johnsone7245742012-09-05 17:12:55 -070019888 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019889}/*WDI_ProcessKeepAliveRsp*/
19890
19891/**
19892 @brief Process wowl add ptrn Rsp function (called when a
19893 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019894
19895 @param pWDICtx: pointer to the WLAN DAL context
19896 pEventData: pointer to the event information structure
19897
Jeff Johnson295189b2012-06-20 16:38:30 -070019898 @see
19899 @return Result of the function call
19900*/
19901WDI_Status
19902WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019903(
Jeff Johnson295189b2012-06-20 16:38:30 -070019904 WDI_ControlBlockType* pWDICtx,
19905 WDI_EventInfoType* pEventData
19906)
19907{
Jeff Johnson295189b2012-06-20 16:38:30 -070019908 eHalStatus halStatus;
19909 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019910 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19911 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19912
Jeff Johnson295189b2012-06-20 16:38:30 -070019913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19914
19915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019917 -------------------------------------------------------------------------*/
19918 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19919 ( NULL == pEventData->pEventData))
19920 {
19921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019925 }
19926
19927 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19928
19929 /*-------------------------------------------------------------------------
19930 Extract response and send it to UMAC
19931 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019932 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19933 {
19934 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19935 pEventData->pEventData,
19936 sizeof(halAddWowlBcastPtrRsp));
19937
19938 wdiWowlAddBcPtrRsp.wdiStatus =
19939 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19940 }
19941 else
19942 {
19943 halStatus = *((eHalStatus*)pEventData->pEventData);
19944 wdiWowlAddBcPtrRsp.wdiStatus =
19945 WDI_HAL_2_WDI_STATUS(halStatus);
19946 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019947
19948 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019949 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019950
Jeff Johnsone7245742012-09-05 17:12:55 -070019951 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019952}/*WDI_ProcessWowlAddBcPtrnRsp*/
19953
19954/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019955 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019956 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019957
19958 @param pWDICtx: pointer to the WLAN DAL context
19959 pEventData: pointer to the event information structure
19960
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 @see
19962 @return Result of the function call
19963*/
19964WDI_Status
19965WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019966(
Jeff Johnson295189b2012-06-20 16:38:30 -070019967 WDI_ControlBlockType* pWDICtx,
19968 WDI_EventInfoType* pEventData
19969)
19970{
Jeff Johnson295189b2012-06-20 16:38:30 -070019971 eHalStatus halStatus;
19972 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019973 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19974 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19976
19977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019979 -------------------------------------------------------------------------*/
19980 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19981 ( NULL == pEventData->pEventData))
19982 {
19983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019987 }
19988
19989 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19990
19991 /*-------------------------------------------------------------------------
19992 Extract response and send it to UMAC
19993 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019994 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19995 {
19996 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19997 pEventData->pEventData,
19998 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019999
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020000 wdiWowlDelBcstPtrRsp.wdiStatus =
20001 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20002 }
20003 else
20004 {
20005 halStatus = *((eHalStatus*)pEventData->pEventData);
20006 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20007 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020009 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020010
Jeff Johnsone7245742012-09-05 17:12:55 -070020011 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020012}/*WDI_ProcessWowlDelBcPtrnRsp*/
20013
20014/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020015 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020016 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020017
20018 @param pWDICtx: pointer to the WLAN DAL context
20019 pEventData: pointer to the event information structure
20020
Jeff Johnson295189b2012-06-20 16:38:30 -070020021 @see
20022 @return Result of the function call
20023*/
20024WDI_Status
20025WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020026(
Jeff Johnson295189b2012-06-20 16:38:30 -070020027 WDI_ControlBlockType* pWDICtx,
20028 WDI_EventInfoType* pEventData
20029)
20030{
Jeff Johnson295189b2012-06-20 16:38:30 -070020031 eHalStatus halStatus;
20032 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020033 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20034 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20036
20037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020039 -------------------------------------------------------------------------*/
20040 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20041 ( NULL == pEventData->pEventData))
20042 {
20043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020047 }
20048
20049 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20050
20051 /*-------------------------------------------------------------------------
20052 Extract response and send it to UMAC
20053 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020054 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20055 {
20056 wpalMemoryCopy( &halEnterWowlRspParams,
20057 (wpt_uint8*)pEventData->pEventData,
20058 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020059
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020060 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20061 wdiwowlEnterRsp.status =
20062 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20063 }
20064 else
20065 {
20066 halStatus = *((eHalStatus*)pEventData->pEventData);
20067 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20068 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020069 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020070 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020071
Jeff Johnsone7245742012-09-05 17:12:55 -070020072 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020073}/*WDI_ProcessWowlEnterRsp*/
20074
20075/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020076 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 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_ProcessWowlExitRsp
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{
Jeff Johnson295189b2012-06-20 16:38:30 -070020092 eHalStatus halStatus;
20093 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020094 tHalExitWowlRspParams halExitWowlRspParams;
20095 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20096
Jeff Johnson295189b2012-06-20 16:38:30 -070020097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20098
20099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020100 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020101 -------------------------------------------------------------------------*/
20102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20103 ( NULL == pEventData->pEventData))
20104 {
20105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020109 }
20110
20111 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20112
20113 /*-------------------------------------------------------------------------
20114 Extract response and send it to UMAC
20115 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020116 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20117 {
20118 wpalMemoryCopy( &halExitWowlRspParams,
20119 pEventData->pEventData,
20120 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020121
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020122 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20123 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20124
20125 }
20126 else
20127 {
20128 halStatus = *((eHalStatus*)pEventData->pEventData);
20129 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20130 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020131 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020132 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020133
Jeff Johnsone7245742012-09-05 17:12:55 -070020134 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020135}/*WDI_ProcessWowlExitRsp*/
20136
20137/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020138 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 (called when a response is being received over the bus
20140 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020141
20142 @param pWDICtx: pointer to the WLAN DAL context
20143 pEventData: pointer to the event information structure
20144
Jeff Johnson295189b2012-06-20 16:38:30 -070020145 @see
20146 @return Result of the function call
20147*/
20148WDI_Status
20149WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020150(
Jeff Johnson295189b2012-06-20 16:38:30 -070020151 WDI_ControlBlockType* pWDICtx,
20152 WDI_EventInfoType* pEventData
20153)
20154{
20155 WDI_Status wdiStatus;
20156 eHalStatus halStatus;
20157 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20159
20160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020161 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 -------------------------------------------------------------------------*/
20163 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20164 ( NULL == pEventData->pEventData))
20165 {
20166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020167 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020170 }
20171
20172 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20173
20174 /*-------------------------------------------------------------------------
20175 Extract response and send it to UMAC
20176 -------------------------------------------------------------------------*/
20177 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020178 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020179
20180 /*Notify UMAC*/
20181 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20182
Jeff Johnsone7245742012-09-05 17:12:55 -070020183 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020184}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20185
20186
20187/**
20188 @brief Process Nv download(called when a response
20189 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020190
20191 @param pWDICtx: pointer to the WLAN DAL context
20192 pEventData: pointer to the event information structure
20193
Jeff Johnson295189b2012-06-20 16:38:30 -070020194 @see
20195 @return Result of the function call
20196*/
20197WDI_Status
20198WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020199(
Jeff Johnson295189b2012-06-20 16:38:30 -070020200 WDI_ControlBlockType* pWDICtx,
20201 WDI_EventInfoType* pEventData
20202)
20203{
20204
20205 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20206 tHalNvImgDownloadRspParams halNvDownloadRsp;
20207 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20208
20209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 -------------------------------------------------------------------------*/
20212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20213 ( NULL == pEventData->pEventData))
20214 {
20215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020219 }
20220
20221 /*-------------------------------------------------------------------------
20222 Extract response and send it to UMAC
20223 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020224 wpalMemoryCopy( &halNvDownloadRsp,
20225 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020226 sizeof(halNvDownloadRsp));
20227
20228 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20229
20230 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020231 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20232 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020233 {
20234 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020235 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 }
20237 else
20238 {
20239 /*Reset the Nv related global information in WDI context information */
20240 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20241 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20242 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20243 /*call WDA callback function for last fragment */
20244 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20245 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20246 }
20247
Jeff Johnsone7245742012-09-05 17:12:55 -070020248 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020249}
20250#ifdef WLAN_FEATURE_VOWIFI_11R
20251/**
20252 @brief Process Add TSpec Rsp function (called when a response
20253 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020254
20255 @param pWDICtx: pointer to the WLAN DAL context
20256 pEventData: pointer to the event information structure
20257
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 @see
20259 @return Result of the function call
20260*/
20261WDI_Status
20262WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020263(
Jeff Johnson295189b2012-06-20 16:38:30 -070020264 WDI_ControlBlockType* pWDICtx,
20265 WDI_EventInfoType* pEventData
20266)
20267{
20268 WDI_Status wdiStatus;
20269 tAggrAddTsRspParams aggrAddTsRsp;
20270 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20272
20273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020274 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020275 -------------------------------------------------------------------------*/
20276 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20277 ( NULL == pEventData->pEventData))
20278 {
20279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020280 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020283 }
20284
20285 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20286
20287 /*-------------------------------------------------------------------------
20288 Extract response and send it to UMAC
20289 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020290 wpalMemoryCopy( &aggrAddTsRsp,
20291 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020292 sizeof(aggrAddTsRsp));
20293
20294 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020295 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020296
20297 /*Notify UMAC*/
20298 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20299
Jeff Johnsone7245742012-09-05 17:12:55 -070020300 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020301}/*WDI_ProcessAddTSpecRsp*/
20302#endif /* WLAN_FEATURE_VOWIFI_11R */
20303
20304/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020305 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020306 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020307
20308 @param pWDICtx: pointer to the WLAN DAL context
20309 pEventData: pointer to the event information structure
20310
Jeff Johnson295189b2012-06-20 16:38:30 -070020311 @see
20312 @return Result of the function call
20313*/
20314WDI_Status
20315WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020316(
Jeff Johnson295189b2012-06-20 16:38:30 -070020317 WDI_ControlBlockType* pWDICtx,
20318 WDI_EventInfoType* pEventData
20319)
20320{
20321 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20322 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20323 tHalHostResumeRspParams hostResumeRspMsg;
20324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20325
20326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 -------------------------------------------------------------------------*/
20329 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20330 ( NULL == pEventData->pEventData))
20331 {
20332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020336 }
20337
20338 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20339
20340 /*-------------------------------------------------------------------------
20341 Extract response and send it to UMAC
20342 -------------------------------------------------------------------------*/
20343
Jeff Johnsone7245742012-09-05 17:12:55 -070020344 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020345 (wpt_uint8*)pEventData->pEventData,
20346 sizeof(hostResumeRspMsg));
20347
Jeff Johnsone7245742012-09-05 17:12:55 -070020348 wdiResumeRspParams.wdiStatus =
20349 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020350
20351 /*Notify UMAC*/
20352 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20353
20354 return WDI_STATUS_SUCCESS;
20355}
20356
20357/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020358 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020360
20361 @param pWDICtx: pointer to the WLAN DAL context
20362 pEventData: pointer to the event information structure
20363
Jeff Johnson295189b2012-06-20 16:38:30 -070020364 @see
20365 @return Result of the function call
20366*/
20367WDI_Status
20368WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020369(
Jeff Johnson295189b2012-06-20 16:38:30 -070020370 WDI_ControlBlockType* pWDICtx,
20371 WDI_EventInfoType* pEventData
20372)
20373{
20374 WDI_Status wdiStatus;
20375 eHalStatus halStatus;
20376 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20378
20379 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020380 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020381 -------------------------------------------------------------------------*/
20382 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20383 ( NULL == pEventData->pEventData))
20384 {
20385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020389 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020390
20391 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020392
20393 /*-------------------------------------------------------------------------
20394 Extract response and send it to UMAC
20395 -------------------------------------------------------------------------*/
20396 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020397 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020398
20399 /*Notify UMAC*/
20400 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20401
Jeff Johnsone7245742012-09-05 17:12:55 -070020402 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020403}/*WDI_ProcessSetTxPerTrackingRsp*/
20404
20405/*==========================================================================
20406 Indications from HAL
20407 ==========================================================================*/
20408/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020409 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020410 indication of this kind is being received over the bus
20411 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020412
20413 @param pWDICtx: pointer to the WLAN DAL context
20414 pEventData: pointer to the event information structure
20415
Jeff Johnson295189b2012-06-20 16:38:30 -070020416 @see
20417 @return Result of the function call
20418*/
20419WDI_Status
20420WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020421(
Jeff Johnson295189b2012-06-20 16:38:30 -070020422 WDI_ControlBlockType* pWDICtx,
20423 WDI_EventInfoType* pEventData
20424)
20425{
20426 WDI_LowLevelIndType wdiInd;
20427 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20429
20430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020431 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020432 -------------------------------------------------------------------------*/
20433 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20434 ( NULL == pEventData->pEventData))
20435 {
20436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020437 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020440 }
20441
20442 /*-------------------------------------------------------------------------
20443 Extract indication and send it to UMAC
20444 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020445 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20446 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020447 sizeof(tHalRSSINotification));
20448
20449 /*Fill in the indication parameters*/
20450 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20451 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20452 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20453 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20454 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20455 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20456 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20457 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20458 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20459 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20460 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20461 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20462 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020463 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20464 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020465
ltimariub77f24b2013-01-24 18:54:33 -080020466 if ( pWDICtx->wdiLowLevelIndCB )
20467 {
20468 /*Notify UMAC of indication*/
20469 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20470 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020471
20472 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020473}/*WDI_ProcessLowRSSIInd*/
20474
20475
20476/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020477 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020478 an indication of this kind is being received over the
20479 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020480
20481 @param pWDICtx: pointer to the WLAN DAL context
20482 pEventData: pointer to the event information structure
20483
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 @see
20485 @return Result of the function call
20486*/
20487WDI_Status
20488WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020489(
Jeff Johnson295189b2012-06-20 16:38:30 -070020490 WDI_ControlBlockType* pWDICtx,
20491 WDI_EventInfoType* pEventData
20492)
20493{
20494 WDI_Status wdiStatus;
20495 eHalStatus halStatus;
20496 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020497 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20499
20500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020502 -------------------------------------------------------------------------*/
20503 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20504 ( NULL == pEventData->pEventData))
20505 {
20506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020507 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020510 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020511 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020512 /*-------------------------------------------------------------------------
20513 Extract indication and send it to UMAC
20514 -------------------------------------------------------------------------*/
20515 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20516 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020517 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020518
20519 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020520 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020521 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20522 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080020523 if ( pWDICtx->wdiLowLevelIndCB )
20524 {
20525 /*Notify UMAC*/
20526 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20527 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020528
20529 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020530}/*WDI_ProcessMissedBeaconInd*/
20531
20532
20533/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020534 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 an indication of this kind is being received over the
20536 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020537
20538 @param pWDICtx: pointer to the WLAN DAL context
20539 pEventData: pointer to the event information structure
20540
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 @see
20542 @return Result of the function call
20543*/
20544WDI_Status
20545WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020546(
Jeff Johnson295189b2012-06-20 16:38:30 -070020547 WDI_ControlBlockType* pWDICtx,
20548 WDI_EventInfoType* pEventData
20549)
20550{
20551 WDI_Status wdiStatus;
20552 eHalStatus halStatus;
20553 WDI_LowLevelIndType wdiInd;
20554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20555
20556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020557 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020558 -------------------------------------------------------------------------*/
20559 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20560 ( NULL == pEventData->pEventData))
20561 {
20562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020563 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020564 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020565 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020566 }
20567
20568 /*-------------------------------------------------------------------------
20569 Extract indication and send it to UMAC
20570 -------------------------------------------------------------------------*/
20571 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20572 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020573 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020574
20575 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020576 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020577 /* ! TO DO - fill in from HAL struct:
20578 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20579
ltimariub77f24b2013-01-24 18:54:33 -080020580 if ( pWDICtx->wdiLowLevelIndCB )
20581 {
20582 /*Notify UMAC*/
20583 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20584 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020585
20586 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020587}/*WDI_ProcessUnkAddrFrameInd*/
20588
20589
20590/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020591 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020592 indication of this kind is being received over the bus
20593 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020594
20595 @param pWDICtx: pointer to the WLAN DAL context
20596 pEventData: pointer to the event information structure
20597
Jeff Johnson295189b2012-06-20 16:38:30 -070020598 @see
20599 @return Result of the function call
20600*/
20601WDI_Status
20602WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020603(
Jeff Johnson295189b2012-06-20 16:38:30 -070020604 WDI_ControlBlockType* pWDICtx,
20605 WDI_EventInfoType* pEventData
20606)
20607{
20608 WDI_LowLevelIndType wdiInd;
20609 tpSirMicFailureInd pHalMicFailureInd;
20610
20611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20612
20613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020614 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020615 -------------------------------------------------------------------------*/
20616 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20617 ( NULL == pEventData->pEventData))
20618 {
20619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020620 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020623 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020624
Jeff Johnson295189b2012-06-20 16:38:30 -070020625 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20626 /*-------------------------------------------------------------------------
20627 Extract indication and send it to UMAC
20628 -------------------------------------------------------------------------*/
20629
20630 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020631 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020632 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20633 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20634 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20635 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20636 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20637 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20638 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20639 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020640 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020641 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020642 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020643 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020644 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 pHalMicFailureInd->info.keyId;
20646 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20647 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20648 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20649 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020650
20651 if ( pWDICtx->wdiLowLevelIndCB )
20652 {
20653 /*Notify UMAC*/
20654 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20655 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020656
20657 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020658}/*WDI_ProcessMicFailureInd*/
20659
20660
20661/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020662 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020663 an indication of this kind is being received over the
20664 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020665
20666 @param pWDICtx: pointer to the WLAN DAL context
20667 pEventData: pointer to the event information structure
20668
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 @see
20670 @return Result of the function call
20671*/
20672WDI_Status
20673WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020674(
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 WDI_ControlBlockType* pWDICtx,
20676 WDI_EventInfoType* pEventData
20677)
20678{
20679 WDI_Status wdiStatus;
20680 eHalStatus halStatus;
20681 WDI_LowLevelIndType wdiInd;
20682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20683
20684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020685 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020686 -------------------------------------------------------------------------*/
20687 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20688 ( NULL == pEventData->pEventData))
20689 {
20690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020694 }
20695
20696 /*-------------------------------------------------------------------------
20697 Extract indication and send it to UMAC
20698 -------------------------------------------------------------------------*/
20699
20700 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20701 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020702 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020703
20704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20705 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020706
Jeff Johnson295189b2012-06-20 16:38:30 -070020707 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020708 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20709 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020710
ltimariub77f24b2013-01-24 18:54:33 -080020711 if ( pWDICtx->wdiLowLevelIndCB )
20712 {
20713 /*Notify UMAC*/
20714 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20715 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020716
20717 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020718}/*WDI_ProcessFatalErrorInd*/
20719
20720/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020721 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020722 an indication of this kind is being received over the
20723 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020724
20725 @param pWDICtx: pointer to the WLAN DAL context
20726 pEventData: pointer to the event information structure
20727
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 @see
20729 @return Result of the function call
20730*/
20731WDI_Status
20732WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020733(
Jeff Johnson295189b2012-06-20 16:38:30 -070020734 WDI_ControlBlockType* pWDICtx,
20735 WDI_EventInfoType* pEventData
20736)
20737{
20738 tDeleteStaContextParams halDelSTACtx;
20739 WDI_LowLevelIndType wdiInd;
20740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20741
20742 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020743 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020744 -------------------------------------------------------------------------*/
20745 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20746 ( NULL == pEventData->pEventData))
20747 {
20748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020749 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020750 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020752 }
20753
20754 /*-------------------------------------------------------------------------
20755 Extract indication and send it to UMAC
20756 -------------------------------------------------------------------------*/
20757
20758 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020759 wpalMemoryCopy( &halDelSTACtx,
20760 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020761 sizeof(halDelSTACtx));
20762
20763 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020764 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020765
20766 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20767 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20768 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20769 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20770
Jeff Johnsone7245742012-09-05 17:12:55 -070020771 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020772 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020773 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020774 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020775 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20776 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020777
ltimariub77f24b2013-01-24 18:54:33 -080020778 if ( pWDICtx->wdiLowLevelIndCB )
20779 {
20780 /*Notify UMAC*/
20781 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20782 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020783
20784 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020785}/*WDI_ProcessDelSTAInd*/
20786
20787/**
20788*@brief Process Coex Indication function (called when
20789 an indication of this kind is being received over the
20790 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020791
20792 @param pWDICtx: pointer to the WLAN DAL context
20793 pEventData: pointer to the event information structure
20794
Jeff Johnson295189b2012-06-20 16:38:30 -070020795 @see
20796 @return Result of the function call
20797*/
20798WDI_Status
20799WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020800(
Jeff Johnson295189b2012-06-20 16:38:30 -070020801 WDI_ControlBlockType* pWDICtx,
20802 WDI_EventInfoType* pEventData
20803)
20804{
20805 WDI_LowLevelIndType wdiInd;
20806 tCoexIndMsg halCoexIndMsg;
20807 wpt_uint32 index;
20808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20809
20810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020812 -------------------------------------------------------------------------*/
20813 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20814 ( NULL == pEventData->pEventData ))
20815 {
20816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020820 }
20821
20822 /*-------------------------------------------------------------------------
20823 Extract indication and send it to UMAC
20824 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020825 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20826 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 sizeof(halCoexIndMsg.coexIndParams) );
20828
20829 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020830 wdiInd.wdiIndicationType = WDI_COEX_IND;
20831 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020832 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20833 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020834 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020835 }
20836
20837 // DEBUG
20838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20839 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020840 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20841 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20842 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20843 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20844 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020845
ltimariub77f24b2013-01-24 18:54:33 -080020846 if ( pWDICtx->wdiLowLevelIndCB )
20847 {
20848 /*Notify UMAC*/
20849 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20850 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020851
20852 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020853}/*WDI_ProcessCoexInd*/
20854
20855/**
20856*@brief Process Tx Complete Indication function (called when
20857 an indication of this kind is being received over the
20858 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020859
20860 @param pWDICtx: pointer to the WLAN DAL context
20861 pEventData: pointer to the event information structure
20862
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 @see
20864 @return Result of the function call
20865*/
20866WDI_Status
20867WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020868(
Jeff Johnson295189b2012-06-20 16:38:30 -070020869 WDI_ControlBlockType* pWDICtx,
20870 WDI_EventInfoType* pEventData
20871)
20872{
20873 WDI_LowLevelIndType wdiInd;
20874 tTxComplIndMsg halTxComplIndMsg;
20875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20876
20877 /*-------------------------------------------------------------------------
20878 Sanity check
20879 -------------------------------------------------------------------------*/
20880 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20881 ( NULL == pEventData->pEventData ))
20882 {
20883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020884 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020885 WDI_ASSERT( 0 );
20886 return WDI_STATUS_E_FAILURE;
20887 }
20888
20889 /*-------------------------------------------------------------------------
20890 Extract indication and send it to UMAC
20891 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020892 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20893 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020894 sizeof(halTxComplIndMsg.txComplParams) );
20895
20896 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020897 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20898 wdiInd.wdiIndicationData.tx_complete_status
20899 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020900
ltimariub77f24b2013-01-24 18:54:33 -080020901 if ( pWDICtx->wdiLowLevelIndCB )
20902 {
20903 /*Notify UMAC*/
20904 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20905 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020906
20907 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020908}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020909#ifdef FEATURE_WLAN_TDLS
20910/**
20911*@brief Process TDLS Indication function (called when
20912 an indication of this kind is being received over the
20913 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020914
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020915 @param pWDICtx: pointer to the WLAN DAL context
20916 pEventData: pointer to the event information structure
20917
20918 @see
20919 @return Result of the function call
20920*/
20921WDI_Status
20922WDI_ProcessTdlsInd
20923(
20924 WDI_ControlBlockType* pWDICtx,
20925 WDI_EventInfoType* pEventData
20926)
20927{
20928 WDI_LowLevelIndType wdiInd;
20929 tTdlsIndMsg halTdlsIndMsg;
20930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20931
20932 /*-------------------------------------------------------------------------
20933 Sanity check
20934 -------------------------------------------------------------------------*/
20935 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20936 ( NULL == pEventData->pEventData ))
20937 {
20938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20939 "%s: Invalid parameters", __func__);
20940 WDI_ASSERT( 0 );
20941 return WDI_STATUS_E_FAILURE;
20942 }
20943
20944 /*-------------------------------------------------------------------------
20945 Extract indication and send it to UMAC
20946 -------------------------------------------------------------------------*/
20947 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20948 pEventData->pEventData,
20949 sizeof(halTdlsIndMsg.tdlsIndParams) );
20950
20951 /*Fill in the indication parameters*/
20952 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20953
20954 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20955 = halTdlsIndMsg.tdlsIndParams.status;
20956
20957 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20958 = halTdlsIndMsg.tdlsIndParams.staIdx;
20959
20960 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20961 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20962
20963 /*Notify UMAC*/
20964 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20965
20966 return WDI_STATUS_SUCCESS;
20967}/*WDI_ProcessTdlsInd*/
20968#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020969/**
Viral Modid86bde22012-12-10 13:09:21 -080020970*@brief Process Noa Start Indication function (called when
20971 an indication of this kind is being received over the
20972 bus from HAL)
20973
20974 @param pWDICtx: pointer to the WLAN DAL context
20975 pEventData: pointer to the event information structure
20976
20977 @see
20978 @return Result of the function call
20979*/
20980WDI_Status
20981WDI_ProcessP2pNoaStartInd
20982(
20983 WDI_ControlBlockType* pWDICtx,
20984 WDI_EventInfoType* pEventData
20985)
20986{
20987 WDI_LowLevelIndType wdiInd;
20988 tNoaStartIndMsg halNoaStartIndMsg;
20989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20990
20991 /*-------------------------------------------------------------------------
20992 Sanity check
20993 -------------------------------------------------------------------------*/
20994 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20995 ( NULL == pEventData->pEventData ))
20996 {
20997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20998 "%s: Invalid parameters", __func__);
20999 WDI_ASSERT( 0 );
21000 return WDI_STATUS_E_FAILURE;
21001 }
21002
21003 /*-------------------------------------------------------------------------
21004 Extract indication and send it to UMAC
21005 -------------------------------------------------------------------------*/
21006 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21007 pEventData->pEventData,
21008 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21009
21010 /*Fill in the indication parameters*/
21011 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21012
21013 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21014 = halNoaStartIndMsg.noaStartIndParams.status;
21015
21016 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21017 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21018
21019 /*Notify UMAC*/
21020 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21021
21022 return WDI_STATUS_SUCCESS;
21023}/*WDI_ProcessNoaAttrInd*/
21024
21025/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021026*@brief Process Noa Attr Indication function (called when
21027 an indication of this kind is being received over the
21028 bus from HAL)
21029
21030 @param pWDICtx: pointer to the WLAN DAL context
21031 pEventData: pointer to the event information structure
21032
21033 @see
21034 @return Result of the function call
21035*/
21036WDI_Status
21037WDI_ProcessP2pNoaAttrInd
21038(
21039 WDI_ControlBlockType* pWDICtx,
21040 WDI_EventInfoType* pEventData
21041)
21042{
21043 WDI_LowLevelIndType wdiInd;
21044 tNoaAttrIndMsg halNoaAttrIndMsg;
21045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21046
21047 /*-------------------------------------------------------------------------
21048 Sanity check
21049 -------------------------------------------------------------------------*/
21050 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21051 ( NULL == pEventData->pEventData ))
21052 {
21053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021054 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021055 WDI_ASSERT( 0 );
21056 return WDI_STATUS_E_FAILURE;
21057 }
21058
21059 /*-------------------------------------------------------------------------
21060 Extract indication and send it to UMAC
21061 -------------------------------------------------------------------------*/
21062 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21063 pEventData->pEventData,
21064 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21065
21066 /*Fill in the indication parameters*/
21067 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021068
Jeff Johnson295189b2012-06-20 16:38:30 -070021069 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21070 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021071
Jeff Johnson295189b2012-06-20 16:38:30 -070021072 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21073 = halNoaAttrIndMsg.noaAttrIndParams.index;
21074 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21075 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21076 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21077 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021078
Jeff Johnson295189b2012-06-20 16:38:30 -070021079 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21080 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21081 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21082 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21083 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21084 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21085 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21086 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021087
Jeff Johnson295189b2012-06-20 16:38:30 -070021088 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21089 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21090 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21091 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21092 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21093 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21094 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21095 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21096
ltimariub77f24b2013-01-24 18:54:33 -080021097 if ( pWDICtx->wdiLowLevelIndCB )
21098 {
21099 /*Notify UMAC*/
21100 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21101 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021102
21103 return WDI_STATUS_SUCCESS;
21104}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021105
21106/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021107 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021108 an indication of this kind is being received over the
21109 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021110
21111 @param pWDICtx: pointer to the WLAN DAL context
21112 pEventData: pointer to the event information structure
21113
Jeff Johnson295189b2012-06-20 16:38:30 -070021114 @see
21115 @return Result of the function call
21116*/
21117WDI_Status
21118WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021119(
Jeff Johnson295189b2012-06-20 16:38:30 -070021120 WDI_ControlBlockType* pWDICtx,
21121 WDI_EventInfoType* pEventData
21122)
21123{
21124 WDI_LowLevelIndType wdiInd;
21125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021126
Jeff Johnson295189b2012-06-20 16:38:30 -070021127 /*-------------------------------------------------------------------------
21128 Extract indication and send it to UMAC
21129 -------------------------------------------------------------------------*/
21130 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021131 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21132
ltimariub77f24b2013-01-24 18:54:33 -080021133 if ( pWDICtx->wdiLowLevelIndCB )
21134 {
21135 /*Notify UMAC*/
21136 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21137 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021138
Jeff Johnsone7245742012-09-05 17:12:55 -070021139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021140}/*WDI_ProcessTxPerHitInd*/
21141
Jeff Johnson295189b2012-06-20 16:38:30 -070021142/**
Yue Mab9c86f42013-08-14 15:59:08 -070021143 @brief Process Periodic Tx Pattern Fw Indication function
21144
21145 @param pWDICtx: pointer to the WLAN DAL context
21146 pEventData: pointer to the event information structure
21147
21148 @see
21149 @return Result of the function call
21150*/
21151WDI_Status
21152WDI_ProcessPeriodicTxPtrnFwInd
21153(
21154 WDI_ControlBlockType* pWDICtx,
21155 WDI_EventInfoType* pEventData
21156)
21157{
21158 WDI_LowLevelIndType wdiInd;
21159
21160 /*-------------------------------------------------------------------------
21161 Sanity check
21162 -------------------------------------------------------------------------*/
21163 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21164 (NULL == pEventData->pEventData))
21165 {
21166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21167 "%s: Invalid parameters", __func__);
21168 WDI_ASSERT(0);
21169 return WDI_STATUS_E_FAILURE;
21170 }
21171
21172 /*-------------------------------------------------------------------------
21173 Extract indication and send it to UMAC
21174 -------------------------------------------------------------------------*/
21175 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21176 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21177 sizeof(tHalPeriodicTxPtrnFwInd));
21178
21179 if (pWDICtx->wdiLowLevelIndCB)
21180 {
21181 /*Notify UMAC*/
21182 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21183 }
21184
21185 return WDI_STATUS_SUCCESS;
21186}
21187
21188/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021189 @brief WDI_ProcessFTMCommandReq
21190 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021191
21192 @param pWDICtx: pointer to the WLAN DAL context
21193 pEventData: pointer to the event information structure
21194
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 @see
21196 @return Result of the function call
21197*/
21198WDI_Status
21199WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021200(
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 WDI_ControlBlockType* pWDICtx,
21202 WDI_EventInfoType* pEventData
21203)
21204{
21205 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21206 wpt_uint8 *ftmCommandBuffer = NULL;
21207 wpt_uint16 dataOffset;
21208 wpt_uint16 bufferSize;
21209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021211 -------------------------------------------------------------------------*/
21212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21213 ( NULL == pEventData->pEventData))
21214
21215 {
21216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021217 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021220 }
21221
21222 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21223
21224 /* Get MSG Buffer */
21225 WDI_GetMessageBuffer(pWDICtx,
21226 WDI_FTM_CMD_REQ,
21227 ftmCommandReq->bodyLength,
21228 &ftmCommandBuffer,
21229 &dataOffset,
21230 &bufferSize);
21231
21232 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21233 ftmCommandReq->FTMCommandBody,
21234 ftmCommandReq->bodyLength);
21235
21236 /* Send MSG */
21237 return WDI_SendMsg(pWDICtx,
21238 ftmCommandBuffer,
21239 bufferSize,
21240 pEventData->pCBfnc,
21241 pEventData->pUserData,
21242 WDI_FTM_CMD_RESP);
21243}
21244
21245/**
21246 @brief WDI_ProcessFTMCommandRsp
21247 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021248
21249 @param pWDICtx: pointer to the WLAN DAL context
21250 pEventData: pointer to the event information structure
21251
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 @see
21253 @return Result of the function call
21254*/
21255WDI_Status
21256WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021257(
Jeff Johnson295189b2012-06-20 16:38:30 -070021258 WDI_ControlBlockType* pWDICtx,
21259 WDI_EventInfoType* pEventData
21260)
21261{
21262 WDI_FTMCommandRspCb ftmCMDRspCb;
21263 tProcessPttRspParams *ftmCMDRspData = NULL;
21264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21265
21266 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021267 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021268 -------------------------------------------------------------------------*/
21269 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21270 ( NULL == pEventData->pEventData))
21271 {
21272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021273 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021274 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 }
21277
21278 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21279
21280 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21281
Jeff Johnsone7245742012-09-05 17:12:55 -070021282 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21283 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021284 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21285
21286 /*Notify UMAC*/
21287 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21288
Jeff Johnsone7245742012-09-05 17:12:55 -070021289 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021290}
Jeff Johnson295189b2012-06-20 16:38:30 -070021291/**
21292 @brief WDI_ProcessHalDumpCmdReq
21293 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021294
21295 @param pWDICtx: pointer to the WLAN DAL context
21296 pEventData: pointer to the event information structure
21297
Jeff Johnson295189b2012-06-20 16:38:30 -070021298 @see
21299 @return Result of the function call
21300*/
21301WDI_Status
21302WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021303(
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 WDI_ControlBlockType* pWDICtx,
21305 WDI_EventInfoType* pEventData
21306)
21307{
21308 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21309 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21310 wpt_uint16 usDataOffset = 0;
21311 wpt_uint16 usSendSize = 0;
21312 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021313 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021314
21315 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021316 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021317 -------------------------------------------------------------------------*/
21318 if (( NULL == pEventData ) ||
21319 ( NULL == pEventData->pEventData) ||
21320 ( NULL == pEventData->pCBfnc ))
21321 {
21322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021323 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021326 }
21327
21328 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21329 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21330
21331 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021332 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021333 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021334 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021335 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021336 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021337 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021338 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021339 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021340 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021341 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021342
Jeff Johnson295189b2012-06-20 16:38:30 -070021343 /*-----------------------------------------------------------------------
21344 Get message buffer
21345 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021346 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021347 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21348 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021349 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021350 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21351 {
21352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021353 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021354 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021357 }
21358
Jeff Johnsone7245742012-09-05 17:12:55 -070021359 wpalMemoryCopy( pSendBuffer+usDataOffset,
21360 &halDumpCmdReqMsg.dumpCmdReqParams,
21361 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021362
21363 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021364 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021365
21366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021367 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021368 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021369 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21370 wdiHALDumpCmdRspCb, pEventData->pUserData,
21371 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021372}
21373
21374/**
21375 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021376 Process hal Dump Command Response from HAL, simply route to HDD
21377
21378 @param pWDICtx: pointer to the WLAN DAL context
21379 pEventData: pointer to the event information structure
21380
Jeff Johnson295189b2012-06-20 16:38:30 -070021381 @see
21382 @return Result of the function call
21383*/
21384WDI_Status
21385WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021386(
Jeff Johnson295189b2012-06-20 16:38:30 -070021387 WDI_ControlBlockType* pWDICtx,
21388 WDI_EventInfoType* pEventData
21389)
21390{
21391 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021392 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021393 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21394
21395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021397 -------------------------------------------------------------------------*/
21398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21399 ( NULL == pEventData->pEventData))
21400 {
21401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021405 }
21406
Jeff Johnsone7245742012-09-05 17:12:55 -070021407 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021408
21409 /*Initialize the WDI Response structure */
21410 wdiHALDumpCmdRsp.usBufferLen = 0;
21411 wdiHALDumpCmdRsp.pBuffer = NULL;
21412
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021413 wpalMemoryCopy( &halDumpCmdRspParams,
21414 pEventData->pEventData,
21415 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021416
21417 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021418 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021419
21420 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021421 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021422 {
21423 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021424 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21425 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21426
21427 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21428 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021429 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021430 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021431
Jeff Johnson295189b2012-06-20 16:38:30 -070021432 /*Notify UMAC*/
21433 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21434
21435 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21436 {
21437 /* Free the allocated buffer */
21438 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21439 }
21440 return WDI_STATUS_SUCCESS;
21441}
21442
21443/*==========================================================================
21444 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021445
Jeff Johnson295189b2012-06-20 16:38:30 -070021446 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021448==========================================================================*/
21449/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021450 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021451 when it wishes to send up a notification like the ones
21452 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021453
Jeff Johnson295189b2012-06-20 16:38:30 -070021454 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021455
21456 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021457 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021458 wctsNotifyCBData: the callback data of the user
21459
Jeff Johnson295189b2012-06-20 16:38:30 -070021460 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021461
21462 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021463*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021464void
Jeff Johnson295189b2012-06-20 16:38:30 -070021465WDI_NotifyMsgCTSCB
21466(
Jeff Johnsone7245742012-09-05 17:12:55 -070021467 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 WCTS_NotifyEventType wctsEvent,
21469 void* wctsNotifyCBData
21470)
21471{
Jeff Johnsone7245742012-09-05 17:12:55 -070021472 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21474
21475 if (NULL == pWDICtx )
21476 {
21477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021478 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021479 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021480 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021481 }
21482
21483 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21484 {
21485 /* callback presumably occurred after close */
21486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021487 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021488 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021489 }
21490
21491 if ( WCTS_EVENT_OPEN == wctsEvent )
21492 {
21493 /*Flag must be set atomically as it is checked from incoming request
21494 functions*/
21495 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021496 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021497
21498 /*Nothing to do - so try to dequeue any pending request that may have
21499 occurred while we were trying to establish this*/
21500 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021501 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021502 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021503 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021504 {
21505 /*Flag must be set atomically as it is checked from incoming request
21506 functions*/
21507 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021508 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021509
21510 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021511 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021512 wpalMutexRelease(&pWDICtx->wptMutex);
21513
21514 /*Notify that the Control Channel is closed */
21515 wpalEventSet(&pWDICtx->wctsActionEvent);
21516 }
21517
21518}/*WDI_NotifyMsgCTSCB*/
21519
21520
21521/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021522 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 when it wishes to send up a packet received over the
21524 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070021525
Jeff Johnson295189b2012-06-20 16:38:30 -070021526 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021527
21528 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 pMsg: the packet
21530 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070021531 wctsRxMsgCBData: the callback data of the user
21532
Jeff Johnson295189b2012-06-20 16:38:30 -070021533 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021534
21535 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021536*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021537void
21538WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070021539(
Jeff Johnsone7245742012-09-05 17:12:55 -070021540 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021541 void* pMsg,
21542 wpt_uint32 uLen,
21543 void* wctsRxMsgCBData
21544)
21545{
Jeff Johnsone7245742012-09-05 17:12:55 -070021546 tHalMsgHeader *pHalMsgHeader;
21547 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021548 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
21549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21550
21551 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021552 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021553 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021554 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 ( uLen < sizeof(tHalMsgHeader)))
21556 {
21557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021558 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021560 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021561 }
21562
21563 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21564 {
21565 /* callback presumably occurred after close */
21566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021567 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021568 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 }
21570
Jeff Johnsone7245742012-09-05 17:12:55 -070021571 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021572 context - so no serialization is necessary here
21573 ! - revisit this assumption */
21574
21575 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21576
21577 if ( uLen != pHalMsgHeader->msgLen )
21578 {
21579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21580 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021581 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053021582 wpalWlanReload();
21583
Jeff Johnsone7245742012-09-05 17:12:55 -070021584 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021585 }
21586
21587 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21588
21589 /*The message itself starts after the header*/
21590 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21591 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21592 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21593 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21594
21595
21596 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21597 {
21598 /*Stop the timer as the response was received */
21599 /*!UT - check for potential race conditions between stop and response */
21600 wpalTimerStop(&pWDICtx->wptResponseTimer);
21601 }
21602 /* Check if we receive a response message which is not expected */
21603 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21604 {
21605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21606 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21607 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021608 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021609 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21610 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021611
21612 if (gWDICb.bEnableSSR == false)
21613 {
21614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21615 "SSR is not enabled on WDI timeout");
21616 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21617 return;
21618 }
21619 wpalWcnssResetIntr();
21620 /* if this timer fires, it means Riva did not receive the FIQ */
21621 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21622
Jeff Johnson295189b2012-06-20 16:38:30 -070021623 return;
21624 }
21625
21626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21627 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21628
21629 /*Post response event to the state machine*/
21630 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21631
21632}/*WDI_RXMsgCTSCB*/
21633
21634
21635/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021636 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021637========================================================================*/
21638
21639/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021640 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021641 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021642
Jeff Johnson295189b2012-06-20 16:38:30 -070021643 @param pWDICtx - pointer to the control block
21644
21645 @return Result of the function call
21646*/
21647WPT_INLINE WDI_Status
21648WDI_CleanCB
21649(
21650 WDI_ControlBlockType* pWDICtx
21651)
21652{
21653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21654
21655 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021656 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021657
Jeff Johnsone7245742012-09-05 17:12:55 -070021658 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021659 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21660 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21661
21662 WDI_ResetAssocSessions( pWDICtx );
21663
21664 return WDI_STATUS_SUCCESS;
21665}/*WDI_CleanCB*/
21666
21667
21668/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021669 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021670
Jeff Johnsone7245742012-09-05 17:12:55 -070021671
21672 @param pWDICtx: pointer to the WLAN DAL context
21673 pEventData: pointer to the event information structure
21674
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 @see
21676 @return Result of the function call
21677*/
21678WPT_INLINE WDI_Status
21679WDI_ProcessRequest
21680(
21681 WDI_ControlBlockType* pWDICtx,
21682 WDI_EventInfoType* pEventData
21683)
21684{
21685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21686
Jeff Johnsone7245742012-09-05 17:12:55 -070021687 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021688 already checked these pointers*/
21689
21690 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21691 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021692 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021694 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021695 WDI_getReqMsgString(pEventData->wdiRequest),
21696 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21697 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21698 }
21699 else
21700 {
21701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021702 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021703 pEventData->wdiRequest);
21704 return WDI_STATUS_E_NOT_IMPLEMENT;
21705 }
21706}/*WDI_ProcessRequest*/
21707
21708
21709/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021710 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021711 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021712 prefixes it with a send message header
21713
21714 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021715 wdiReqType: type of the request being sent
21716 uBufferLen: message buffer len
21717 pMsgBuffer: resulting allocated buffer
21718 pusDataOffset: offset in the buffer where the caller
21719 can start copying its message data
21720 puBufferSize: the resulting buffer size (offset+buff
21721 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021722
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 @see
21724 @return Result of the function call
21725*/
21726WDI_Status
21727WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021728(
21729 WDI_ControlBlockType* pWDICtx,
21730 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021731 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021732 wpt_uint8** pMsgBuffer,
21733 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021734 wpt_uint16* pusBufferSize
21735)
21736{
21737 tHalMsgHeader halMsgHeader;
21738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21739
Jeff Johnsone7245742012-09-05 17:12:55 -070021740 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021741 again*/
21742
21743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021744 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021745 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021746 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021747 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21748 if ( NULL == *pMsgBuffer )
21749 {
21750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21751 "Unable to allocate message buffer for req %s (%d)",
21752 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021753 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021755 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021756 }
21757
21758 /*-------------------------------------------------------------------------
21759 Fill in the message header
21760 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021761 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21762 /* Fill msgVersion */
21763#ifdef WLAN_FEATURE_11AC
21764 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021765 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021766 else
21767#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021768 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021769
Jeff Johnsone7245742012-09-05 17:12:55 -070021770 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21771 *pusDataOffset = sizeof(halMsgHeader);
21772 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21773
21774 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021775}/*WDI_GetMessageBuffer*/
21776
21777
21778/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021779 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021780 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021781 the CB
21782
21783 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021784 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021785
Jeff Johnson295189b2012-06-20 16:38:30 -070021786 usSendSize size of the buffer to be sent
21787 pRspCb: response callback - save in the WDI
21788 CB
21789 pUserData: user data associated with the
21790 callback
21791 wdiExpectedResponse: the code of the response that is
21792 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021793
Jeff Johnson295189b2012-06-20 16:38:30 -070021794 @see
21795 @return Result of the function call
21796*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021797WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021798WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021799(
21800 WDI_ControlBlockType* pWDICtx,
21801 wpt_uint8* pSendBuffer,
21802 wpt_uint32 usSendSize,
21803 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021804 void* pUserData,
21805 WDI_ResponseEnumType wdiExpectedResponse
21806)
21807{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021808 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021809 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21811
21812 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021813 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021814 ------------------------------------------------------------------------*/
21815 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021816 pWDICtx->pfncRspCB = pRspCb;
21817 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021818
21819 /*-----------------------------------------------------------------------
21820 Call the CTS to send this message over - free message afterwards
21821 - notify transport failure
21822 Note: CTS is reponsible for freeing the message buffer.
21823 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021824 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21825 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21826 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053021829 "Failed to send message with expected response %s (%d)"
21830 " over the bus - catastrophic failure",
21831 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21832 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070021833
Jeff Johnsond13512a2012-07-17 11:42:19 -070021834 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021835 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021836 else
21837 {
21838 /* even when message was placed in CTS deferred Q, we will treat it
21839 success but log this info
21840 */
21841 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21842 {
21843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21844 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21845 "response %s (%d)",
21846 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21847 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021848 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021849 }
21850 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021851
Jeff Johnsond13512a2012-07-17 11:42:19 -070021852 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021853 if ( NULL != pWDICtx->wdiReqStatusCB )
21854 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021855 /*Inform originator whether request went through or not*/
21856 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21857 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021858 pWDICtx->wdiReqStatusCB = NULL;
21859 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021860 callback(wdiStatus, callbackContext);
21861
21862 /*For WDI requests which have registered a request callback,
21863 inform the WDA caller of the same via setting the return value
21864 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21865 end up repeating the functonality in the req callback for the
21866 WDI_STATUS_E_FAILURE case*/
21867 if (wdiStatus == WDI_STATUS_E_FAILURE)
21868 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021869 }
21870
Jeff Johnsond13512a2012-07-17 11:42:19 -070021871 if ( wdiStatus == WDI_STATUS_SUCCESS )
21872 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021873 /*Start timer for the expected response */
21874 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021875
21876 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021877 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021878 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021879 }
21880 else
21881 {
Jeff Johnson902c9832012-12-10 14:28:09 -080021882 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021883 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21884 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021885
Jeff Johnsond13512a2012-07-17 11:42:19 -070021886 return wdiStatus;
21887
Jeff Johnson295189b2012-06-20 16:38:30 -070021888}/*WDI_SendMsg*/
21889
21890
21891
21892/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021893 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021894 the bus using the control transport and saves some info
21895 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021896
21897 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021898 pSendBuffer: buffer to be sent
21899 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021900
Jeff Johnson295189b2012-06-20 16:38:30 -070021901 @see
21902 @return Result of the function call
21903*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021904WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021905WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021906(
21907 WDI_ControlBlockType* pWDICtx,
21908 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 wpt_uint32 usSendSize
21910)
21911{
21912 wpt_uint32 uStatus ;
21913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21914
21915 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021916 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021917 Note: CTS is reponsible for freeing the message buffer.
21918 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021919 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021920 (void*)pSendBuffer, usSendSize );
21921
21922 /*Inform Upper MAC about the outcome of the request*/
21923 if ( NULL != pWDICtx->wdiReqStatusCB )
21924 {
21925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21926 "Send indication status : %d", uStatus);
21927
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021928 /* even if CTS placed indication into its deferred Q, we treat it
21929 * as success and let CTS drain its queue as per smd interrupt to CTS
21930 */
21931 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 -070021932 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021933 }
21934
21935 /*If sending of the message failed - it is considered catastrophic and
21936 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021937 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21938 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21939
Jeff Johnson295189b2012-06-20 16:38:30 -070021940 {
21941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021942 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021943
21944 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21945 return WDI_STATUS_E_FAILURE;
21946 }
21947
Jeff Johnsone7245742012-09-05 17:12:55 -070021948 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021949}/*WDI_SendIndication*/
21950
21951
21952/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021953 @brief WDI_DetectedDeviceError - called internally by DAL when
21954 it has detected a failure in the device
21955
21956 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 usErrorCode: error code detected by WDI or received
21958 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021959
Jeff Johnson295189b2012-06-20 16:38:30 -070021960 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021961 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021962*/
21963void
21964WDI_DetectedDeviceError
21965(
21966 WDI_ControlBlockType* pWDICtx,
21967 wpt_uint16 usErrorCode
21968)
21969{
21970 WDI_LowLevelIndType wdiInd;
21971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21972
21973 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21974 "Device Error detected code: %d - transitioning to stopped state",
21975 usErrorCode);
21976
Katya Nigamf02ad012014-05-05 16:12:49 +053021977 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
21978
Jeff Johnson295189b2012-06-20 16:38:30 -070021979 wpalMutexAcquire(&pWDICtx->wptMutex);
21980
21981 WDI_STATableStop(pWDICtx);
21982
21983 WDI_ResetAssocSessions(pWDICtx);
21984
21985 /*Set the expected state transition to stopped - because the device
21986 experienced a failure*/
21987 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21988
21989 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021990 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021991
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021993
21994 /*TO DO: - there should be an attempt to reset the device here*/
21995
21996 wpalMutexRelease(&pWDICtx->wptMutex);
21997
21998 /*------------------------------------------------------------------------
21999 Notify UMAC if a handler is registered
22000 ------------------------------------------------------------------------*/
22001 if (pWDICtx->wdiLowLevelIndCB)
22002 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022003 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22004 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022005
22006 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22007 }
22008}/*WDI_DetectedDeviceError*/
22009
22010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022011 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022012 we started on send message has expire - this should
22013 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022014 reply - trigger catastrophic failure
22015 @param
22016
Jeff Johnson295189b2012-06-20 16:38:30 -070022017 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022018
22019 @see
22020 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022021*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022022void
Jeff Johnson295189b2012-06-20 16:38:30 -070022023WDI_ResponseTimerCB
22024(
22025 void *pUserData
22026)
22027{
22028 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22030
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022031 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022034 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022036 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022037 }
22038
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022039 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022040 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022041 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022042
22043 /* If response timer is running at this time that means this timer
22044 * event is not for the last request but rather last-to-last request and
22045 * this timer event has come after we recevied respone for last-to-last
22046 * message
22047 */
22048 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22049 {
22050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22051 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022052 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022053 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22055 "uArchTimeStampTmrStart: %llu seconds, "
22056 "uArchTimeStampTmrExp: %llu seconds",
22057 pWDICtx->uArchTimeStampRspTmrStart,
22058 pWDICtx->uArchTimeStampRspTmrExp);
22059
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022060 return;
22061 }
22062
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022063 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022064 {
22065
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022067 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022068 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022069 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022070 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22071 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22073 "uArchTimeStampTmrStart: %llu seconds, "
22074 "uArchTimeStampTmrExp: %llu seconds",
22075 pWDICtx->uArchTimeStampRspTmrStart,
22076 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022077
22078 /* WDI timeout means Riva is not responding or SMD communication to Riva
22079 * is not happening. The only possible way to recover from this error
22080 * is to initiate SSR from APPS.
22081 * There is also an option to re-enable wifi, which will eventually
22082 * trigger SSR
22083 */
22084 if (gWDICb.bEnableSSR == false)
22085 {
22086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22087 "SSR is not enabled on WDI timeout");
22088 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22089 return;
22090 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022091#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022092 wpalWcnssResetIntr();
Katya Nigam921bf202014-02-26 14:52:24 +053022093 if(wpalIsWDresetInProgress())
22094 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022095 if(wpalIsSsrPanicOnFailure())
22096 wpalDevicePanic();
Katya Nigam921bf202014-02-26 14:52:24 +053022097 }
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022098 /* if this timer fires, it means Riva did not receive the FIQ */
22099 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022100#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022101 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22102 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022103#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022104 }
22105 else
22106 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022108 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022109 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022110 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22111 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22113 "uArchTimeStampTmrStart: %llu seconds, "
22114 "uArchTimeStampTmrExp: %llu seconds",
22115 pWDICtx->uArchTimeStampRspTmrStart,
22116 pWDICtx->uArchTimeStampRspTmrExp);
22117
Jeff Johnson295189b2012-06-20 16:38:30 -070022118 }
22119
22120 return;
22121
22122}/*WDI_ResponseTimerCB*/
22123
22124
22125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022127
Jeff Johnsone7245742012-09-05 17:12:55 -070022128
22129 @param pWDICtx: pointer to the WLAN DAL context
22130 pEventData: pointer to the event information structure
22131
Jeff Johnson295189b2012-06-20 16:38:30 -070022132 @see
22133 @return Result of the function call
22134*/
22135WPT_INLINE WDI_Status
22136WDI_ProcessResponse
22137(
22138 WDI_ControlBlockType* pWDICtx,
22139 WDI_EventInfoType* pEventData
22140)
22141{
22142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22143
Jeff Johnsone7245742012-09-05 17:12:55 -070022144 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 already checked these pointers
22146 ! - revisit this assumption */
22147 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22148 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022149 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022151 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022152 WDI_getRespMsgString(pEventData->wdiResponse),
22153 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22154 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22155 }
22156 else
22157 {
22158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022159 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022160 pEventData->wdiResponse);
22161 return WDI_STATUS_E_NOT_IMPLEMENT;
22162 }
22163}/*WDI_ProcessResponse*/
22164
22165
22166/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022167 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022168=========================================================================*/
22169
22170/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022171 @brief Utility function used by the DAL Core to help queue a
22172 request that cannot be processed right away.
22173 @param
22174
Jeff Johnson295189b2012-06-20 16:38:30 -070022175 pWDICtx: - pointer to the WDI control block
22176 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022177 queued
22178
22179 @see
22180 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022181*/
22182WDI_Status
22183WDI_QueuePendingReq
22184(
22185 WDI_ControlBlockType* pWDICtx,
22186 WDI_EventInfoType* pEventData
22187)
22188{
Jeff Johnsone7245742012-09-05 17:12:55 -070022189 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022190 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022191 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22193
22194 if ( NULL == pEventDataQueue )
22195 {
22196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022197 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022198 WDI_ASSERT(0);
22199 return WDI_STATUS_MEM_FAILURE;
22200 }
22201
22202 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22203 pEventDataQueue->pUserData = pEventData->pUserData;
22204 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22205 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022206 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022207
22208 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22209 {
22210 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022211
Jeff Johnson295189b2012-06-20 16:38:30 -070022212 if ( NULL == pEventInfo )
22213 {
22214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022215 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022216 WDI_ASSERT(0);
22217 wpalMemoryFree(pEventDataQueue);
22218 return WDI_STATUS_MEM_FAILURE;
22219 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022220
Jeff Johnson295189b2012-06-20 16:38:30 -070022221 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22222
22223 }
22224 pEventDataQueue->pEventData = pEventInfo;
22225
22226 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022227 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022228
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022229 if (eWLAN_PAL_STATUS_E_FAILURE ==
22230 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22231 {
22232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22233 "pEventDataQueue wpal_list_insert_back failed");
22234 WDI_ASSERT(0);
22235 wpalMemoryFree(pEventDataQueue);
22236 wpalMemoryFree(pEventInfo);
22237 return WDI_STATUS_MEM_FAILURE;
22238 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022239
22240 return WDI_STATUS_SUCCESS;
22241}/*WDI_QueuePendingReq*/
22242
22243/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022244 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022246 @param
22247
22248 pMsg - pointer to the message
22249
22250 @see
22251 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022252*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022253void
Jeff Johnson295189b2012-06-20 16:38:30 -070022254WDI_PALCtrlMsgCB
22255(
22256 wpt_msg *pMsg
22257)
22258{
22259 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022260 WDI_ControlBlockType* pWDICtx = NULL;
22261 WDI_Status wdiStatus;
22262 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022263 void* pUserData;
22264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22265
22266 if (( NULL == pMsg )||
22267 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22268 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22269 {
22270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022271 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 }
22275
22276 /*Transition back to the state that we had before serialization
22277 - serialization transitions us to BUSY to stop any incomming requests
22278 ! TO DO L: possible race condition here if a request comes in between the
22279 state transition and the post function*/
22280
Jeff Johnsone7245742012-09-05 17:12:55 -070022281 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022282
22283 /*-----------------------------------------------------------------------
22284 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022285 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022286 -----------------------------------------------------------------------*/
22287 switch ( pEventData->wdiRequest )
22288 {
22289
Jeff Johnsone7245742012-09-05 17:12:55 -070022290 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022291 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22292 break;
22293
Jeff Johnson295189b2012-06-20 16:38:30 -070022294 case WDI_NV_DOWNLOAD_REQ:
22295 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22296 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22297 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22298 {
22299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022300 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022301 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22302 }
22303 else
22304 {
22305 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22306 }
22307
22308 break;
22309
22310 default:
22311 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22312 break;
22313 }/*switch ( pEventData->wdiRequest )*/
22314
22315 if ( WDI_STATUS_SUCCESS != wdiStatus )
22316 {
22317 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22318
22319 if ( NULL != pfnReqStatusCB )
22320 {
22321 /*Fail the request*/
22322 pfnReqStatusCB( wdiStatus, pUserData);
22323 }
22324 }
22325
22326 /* Free data - that was allocated when queueing*/
22327 if( pEventData != NULL )
22328 {
22329 if( pEventData->pEventData != NULL )
22330 {
22331 wpalMemoryFree(pEventData->pEventData);
22332 }
22333 wpalMemoryFree(pEventData);
22334 }
22335
22336 if( pMsg != NULL )
22337 {
22338 wpalMemoryFree(pMsg);
22339 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022340
Jeff Johnson295189b2012-06-20 16:38:30 -070022341}/*WDI_PALCtrlMsgCB*/
22342
22343/**
22344 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022345 and schedule for execution a pending request
22346 @param
22347
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 pWDICtx: - pointer to the WDI control block
22349 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022350 queued
22351
22352 @see
22353 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022354*/
22355WDI_Status
22356WDI_DequeuePendingReq
22357(
22358 WDI_ControlBlockType* pWDICtx
22359)
22360{
Jeff Johnsone7245742012-09-05 17:12:55 -070022361 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022362 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022363 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22365
Jeff Johnsone7245742012-09-05 17:12:55 -070022366 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022367
22368 if ( NULL == pNode )
22369 {
22370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022371 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022372 return WDI_STATUS_SUCCESS;
22373 }
22374
22375 /*The node actually points to the 1st element inside the Event Data struct -
22376 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022377 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022378
22379 /*Serialize processing in the control thread
22380 !TO DO: - check to see if these are all the messages params that need
22381 to be filled in*/
22382 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22383
22384 if ( NULL == palMsg )
22385 {
22386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022387 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022389 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022390 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022391 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022392 palMsg->callback = WDI_PALCtrlMsgCB;
22393 palMsg->ptr = pEventData;
22394
22395 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022396 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022397 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022398
Jeff Johnson295189b2012-06-20 16:38:30 -070022399 /*Transition back to BUSY as we need to handle a queued request*/
22400 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022401
Jeff Johnson295189b2012-06-20 16:38:30 -070022402 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22403
22404 return WDI_STATUS_PENDING;
22405}/*WDI_DequeuePendingReq*/
22406
22407
22408/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022409 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022410 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022411 away.- The assoc requests will be queued by BSSID
22412 @param
22413
Jeff Johnson295189b2012-06-20 16:38:30 -070022414 pWDICtx: - pointer to the WDI control block
22415 pEventData: pointer to the evnt info that needs to be queued
22416 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022417
22418 @see
22419 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022420*/
22421WDI_Status
22422WDI_QueueNewAssocRequest
22423(
22424 WDI_ControlBlockType* pWDICtx,
22425 WDI_EventInfoType* pEventData,
22426 wpt_macAddr macBSSID
22427)
22428{
Jeff Johnsone7245742012-09-05 17:12:55 -070022429 wpt_uint8 i;
22430 WDI_BSSSessionType* pSession = NULL;
22431 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022432 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022433 void* pEventInfo;
22434 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022436
Jeff Johnsone7245742012-09-05 17:12:55 -070022437
22438 /*------------------------------------------------------------------------
22439 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 ------------------------------------------------------------------------*/
22441 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22442 {
22443 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22444 {
22445 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 pSession = &pWDICtx->aBSSSessions[i];
22447 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022448 }
22449 }
22450
22451 if ( i >= WDI_MAX_BSS_SESSIONS )
22452 {
22453 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022454 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022455 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022456
Jeff Johnson295189b2012-06-20 16:38:30 -070022457 /*------------------------------------------------------------------------
22458 Fill in the BSSID for this session and set the usage flag
22459 ------------------------------------------------------------------------*/
22460 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022461 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022462
22463 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022464 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 ------------------------------------------------------------------------*/
22466 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22467 if ( NULL == pEventDataQueue )
22468 {
22469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022470 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022471 WDI_ASSERT(0);
22472 return WDI_STATUS_MEM_FAILURE;
22473 }
22474
22475 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22476 if ( NULL == pSessionIdElement )
22477 {
22478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022479 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 WDI_ASSERT(0);
22481 wpalMemoryFree(pEventDataQueue);
22482 return WDI_STATUS_MEM_FAILURE;
22483 }
22484
22485 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22486 if ( NULL == pEventInfo )
22487 {
22488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022489 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022490 WDI_ASSERT(0);
22491 wpalMemoryFree(pSessionIdElement);
22492 wpalMemoryFree(pEventDataQueue);
22493 return WDI_STATUS_MEM_FAILURE;
22494 }
22495
22496 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22497 pEventDataQueue->pUserData = pEventData->pUserData;
22498 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22499 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022500 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022501
22502 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22503 pEventDataQueue->pEventData = pEventInfo;
22504
22505 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022506 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022507
22508 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022509 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022510
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022511 if (eWLAN_PAL_STATUS_E_FAILURE ==
22512 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22513 {
22514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22515 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
22516 WDI_ASSERT(0);
22517 wpalMemoryFree(pSessionIdElement);
22518 wpalMemoryFree(pEventDataQueue);
22519 wpalMemoryFree(pEventInfo);
22520 return WDI_STATUS_MEM_FAILURE;
22521 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022522
22523 /*We need to maintain a separate list that keeps track of the order in which
22524 the new assoc requests are being queued such that we can start processing
22525 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022526 pSessionIdElement->ucIndex = i;
22527 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022528
22529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22530 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022531 if (eWLAN_PAL_STATUS_E_FAILURE ==
22532 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
22533 {
22534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22535 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
22536 WDI_ASSERT(0);
22537 wpalMemoryFree(pSessionIdElement);
22538 wpalMemoryFree(pEventDataQueue);
22539 wpalMemoryFree(pEventInfo);
22540 return WDI_STATUS_MEM_FAILURE;
22541 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022542
22543 /*Return pending as this is what the status of the request is since it has
22544 been queued*/
22545 return WDI_STATUS_PENDING;
22546}/*WDI_QueueNewAssocRequest*/
22547
22548/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022549 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022550 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022551 away.- The assoc requests will be queued by BSSID
22552 @param
22553
Jeff Johnson295189b2012-06-20 16:38:30 -070022554 pWDICtx: - pointer to the WDI control block
22555 pSession: - session in which to queue
22556 pEventData: pointer to the event info that needs to be
22557 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070022558
22559 @see
22560 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022561*/
22562WDI_Status
22563WDI_QueueAssocRequest
22564(
22565 WDI_ControlBlockType* pWDICtx,
22566 WDI_BSSSessionType* pSession,
22567 WDI_EventInfoType* pEventData
22568)
22569{
Jeff Johnsone7245742012-09-05 17:12:55 -070022570 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022571 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022572 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070022573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022574
22575 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022576 Sanity check
22577 ------------------------------------------------------------------------*/
22578 if (( NULL == pSession ) || ( NULL == pWDICtx ))
22579 {
22580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022581 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022582
Jeff Johnsone7245742012-09-05 17:12:55 -070022583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022584 }
22585
22586 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022587 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022588 ------------------------------------------------------------------------*/
22589 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22590 if ( NULL == pEventDataQueue )
22591 {
22592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022593 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022594 WDI_ASSERT(0);
22595 return WDI_STATUS_MEM_FAILURE;
22596 }
22597
22598 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22599 if ( NULL == pEventInfo )
22600 {
22601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22602 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022603 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 WDI_ASSERT(0);
22605 wpalMemoryFree(pEventDataQueue);
22606 return WDI_STATUS_MEM_FAILURE;
22607 }
22608
22609 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22610 pEventDataQueue->pUserData = pEventData->pUserData;
22611 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22612 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022613 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022614 pEventDataQueue->pEventData = pEventInfo;
22615
22616 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22617
22618 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022619 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022620
22621 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022622 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022623
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022624 if (eWLAN_PAL_STATUS_E_FAILURE ==
22625 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22626 {
22627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22628 "%s: Cannot allocate memory for queueing event data info",
22629 __func__);
22630 WDI_ASSERT(0);
22631 wpalMemoryFree(pEventDataQueue);
22632 wpalMemoryFree(pEventInfo);
22633 return WDI_STATUS_MEM_FAILURE;
22634 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022635
22636 /*The result of this operation is pending because the request has been
22637 queued and it will be processed at a later moment in time */
22638 return WDI_STATUS_PENDING;
22639}/*WDI_QueueAssocRequest*/
22640
22641/**
22642 @brief Utility function used by the DAL Core to help dequeue
22643 an association request that was pending
22644 The request will be queued up in front of the main
22645 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022646 @param
22647
Jeff Johnson295189b2012-06-20 16:38:30 -070022648 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022649
22650
22651 @see
22652 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022653*/
22654WDI_Status
22655WDI_DequeueAssocRequest
22656(
22657 WDI_ControlBlockType* pWDICtx
22658)
22659{
Jeff Johnsone7245742012-09-05 17:12:55 -070022660 wpt_list_node* pNode = NULL;
22661 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022662 WDI_BSSSessionType* pSession;
22663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022664
22665 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 Sanity check
22667 ------------------------------------------------------------------------*/
22668 if ( NULL == pWDICtx )
22669 {
22670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022672
Jeff Johnsone7245742012-09-05 17:12:55 -070022673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 }
22675
22676 /*------------------------------------------------------------------------
22677 An association has been completed => a new association can occur
22678 Check to see if there are any pending associations ->
22679 If so , transfer all the pending requests into the busy queue for
22680 processing
22681 These requests have arrived prior to the requests in the busy queue
22682 (bc they needed to be processed in order to be placed in this queue)
22683 => they will be placed at the front of the busy queue
22684 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022685 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022686
22687 if ( NULL == pNode )
22688 {
22689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022690 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022691 return WDI_STATUS_SUCCESS;
22692 }
22693
22694 /*The node actually points to the 1st element inside the Session Id struct -
22695 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022696 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022697
22698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22699 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22700
22701 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22702 {
22703 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022704
Jeff Johnson295189b2012-06-20 16:38:30 -070022705 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022706 the front of the main waiting queue for subsequent execution*/
22707 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022708 while ( NULL != pNode )
22709 {
22710 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022711 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22712 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022714 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022715 }
22716 else
22717 {
22718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022719 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022720 WPAL_ASSERT(0);
22721 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022723 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022724
Jeff Johnson295189b2012-06-20 16:38:30 -070022725 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22726 wpalMemoryFree(pSessionIdElement);
22727 return WDI_STATUS_SUCCESS;
22728}/*WDI_DequeueAssocRequest*/
22729
22730/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022731 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022732 pending requests - all req cb will be called with
22733 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 @param
22735
Jeff Johnson295189b2012-06-20 16:38:30 -070022736 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022737
22738 @see
22739 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022740*/
22741WDI_Status
22742WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022743(
Jeff Johnson295189b2012-06-20 16:38:30 -070022744 WDI_ControlBlockType* pWDICtx
22745)
22746{
Jeff Johnsone7245742012-09-05 17:12:55 -070022747 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022748 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022749 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022750 void* pUserData;
22751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22752
Jeff Johnsone7245742012-09-05 17:12:55 -070022753 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022754
22755 /*------------------------------------------------------------------------
22756 Go through all the requests and fail them - this will only be called
22757 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022758 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022759 ------------------------------------------------------------------------*/
22760 while( pNode )
22761 {
22762 /*The node actually points to the 1st element inside the Event Data struct -
22763 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022764 pEventDataQueue = (WDI_EventInfoType*)pNode;
22765
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22767 if ( NULL != pfnReqStatusCB )
22768 {
22769 /*Fail the request*/
22770 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22771 }
22772 /* Free data - that was allocated when queueing */
22773 if ( pEventDataQueue->pEventData != NULL )
22774 {
22775 wpalMemoryFree(pEventDataQueue->pEventData);
22776 }
22777 wpalMemoryFree(pEventDataQueue);
22778
22779 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22780 {
22781 break;
22782 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022783 }
22784
Jeff Johnson295189b2012-06-20 16:38:30 -070022785 return WDI_STATUS_SUCCESS;
22786}/*WDI_ClearPendingRequests*/
22787
22788/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022789 @brief Helper routine used to init the BSS Sessions in the WDI control block
22790
22791
22792 @param pWDICtx: pointer to the WLAN DAL context
22793
Jeff Johnson295189b2012-06-20 16:38:30 -070022794 @see
22795*/
22796void
22797WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022798(
Jeff Johnson295189b2012-06-20 16:38:30 -070022799 WDI_ControlBlockType* pWDICtx
22800)
22801{
Jeff Johnsone7245742012-09-05 17:12:55 -070022802 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22804
22805 /*-------------------------------------------------------------------------
22806 No Sanity check
22807 -------------------------------------------------------------------------*/
22808 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22809 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022810 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022811 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22812 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22813 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22814 }
22815}/*WDI_ResetAssocSessions*/
22816
22817/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022818 @brief Helper routine used to find a session based on the BSSID
22819
22820
22821 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022822 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022823 pSession: pointer to the session (if found)
22824
Jeff Johnson295189b2012-06-20 16:38:30 -070022825 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022826 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022827*/
22828wpt_uint8
22829WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022830(
Jeff Johnson295189b2012-06-20 16:38:30 -070022831 WDI_ControlBlockType* pWDICtx,
22832 wpt_macAddr macBSSID,
22833 WDI_BSSSessionType** ppSession
22834)
22835{
Jeff Johnsone7245742012-09-05 17:12:55 -070022836 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22838
22839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022840 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022841 -------------------------------------------------------------------------*/
22842 if ( NULL == ppSession )
22843 {
22844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022845 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022846 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022847 }
22848
Jeff Johnsone7245742012-09-05 17:12:55 -070022849 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022850
Jeff Johnsone7245742012-09-05 17:12:55 -070022851 /*------------------------------------------------------------------------
22852 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022853 ------------------------------------------------------------------------*/
22854 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22855 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022856 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22857 (eWLAN_PAL_TRUE ==
22858 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22859 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022860 {
22861 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022862 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022863 return i;
22864 }
22865 }
22866
Jeff Johnsone7245742012-09-05 17:12:55 -070022867 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022868}/*WDI_FindAssocSession*/
22869
22870/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022871 @brief Helper routine used to find a session based on the BSSID
22872
22873
22874 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022875 ucBSSIdx: BSS Index of the session
22876 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022877
Jeff Johnson295189b2012-06-20 16:38:30 -070022878 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022879 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022880*/
22881wpt_uint8
22882WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022883(
Jeff Johnson295189b2012-06-20 16:38:30 -070022884 WDI_ControlBlockType* pWDICtx,
22885 wpt_uint16 ucBSSIdx,
22886 WDI_BSSSessionType** ppSession
22887)
22888{
Jeff Johnsone7245742012-09-05 17:12:55 -070022889 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22891
22892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022894 -------------------------------------------------------------------------*/
22895 if ( NULL == ppSession )
22896 {
22897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022898 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022899 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022900 }
22901
Jeff Johnsone7245742012-09-05 17:12:55 -070022902 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022903
Jeff Johnsone7245742012-09-05 17:12:55 -070022904 /*------------------------------------------------------------------------
22905 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022906 ------------------------------------------------------------------------*/
22907 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22908 {
22909 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22910 {
22911 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022912 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022913 return i;
22914 }
22915 }
22916
Jeff Johnsone7245742012-09-05 17:12:55 -070022917 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022918}/*WDI_FindAssocSessionByBSSIdx*/
22919
22920/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022921 @brief Helper routine used to find a session based on the BSSID
22922
22923
22924 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022925 ucBSSIdx: BSS Index of the session
22926 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022927
Jeff Johnson295189b2012-06-20 16:38:30 -070022928 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022929 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022930*/
22931wpt_uint8
22932WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022933(
Jeff Johnson295189b2012-06-20 16:38:30 -070022934 WDI_ControlBlockType* pWDICtx,
22935 wpt_uint16 usIdx,
22936 WDI_BSSSessionType** ppSession
22937)
22938{
22939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22940
22941 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022942 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022943 -------------------------------------------------------------------------*/
22944 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22945 {
22946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022947 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022948 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022949 }
22950
22951 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022952 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022953
22954 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022955
Jeff Johnson295189b2012-06-20 16:38:30 -070022956}/*WDI_FindAssocSessionByBSSIdx*/
22957
22958/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022959 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022960 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022961
22962
22963 @param pWDICtx: pointer to the WLAN DAL context
22964 pSession: pointer to the session (if found)
22965
Jeff Johnson295189b2012-06-20 16:38:30 -070022966 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022967 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022968*/
22969wpt_uint8
22970WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022971(
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 WDI_ControlBlockType* pWDICtx,
22973 WDI_BSSSessionType** ppSession
22974)
22975{
Jeff Johnsone7245742012-09-05 17:12:55 -070022976 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022979 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022980 -------------------------------------------------------------------------*/
22981 if ( NULL == ppSession )
22982 {
22983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022984 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022985 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022986 }
22987
Jeff Johnsone7245742012-09-05 17:12:55 -070022988 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022989
Jeff Johnsone7245742012-09-05 17:12:55 -070022990 /*------------------------------------------------------------------------
22991 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022992 ------------------------------------------------------------------------*/
22993 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22994 {
22995 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22996 {
22997 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022998 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022999 return i;
23000 }
23001 }
23002
Jeff Johnsone7245742012-09-05 17:12:55 -070023003 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023004}/*WDI_FindEmptySession*/
23005
23006
23007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023008 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023009 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023010
23011
23012 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023013 macBSSID: pointer to BSSID. If NULL, get all the session.
23014 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23015 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23016 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023017 @see
23018 @return Number of sessions in use
23019*/
23020wpt_uint8
23021WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023022(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023023 WDI_ControlBlockType* pWDICtx,
23024 wpt_macAddr macBSSID,
23025 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023026)
23027{
Jeff Johnsone7245742012-09-05 17:12:55 -070023028 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023030
23031 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023032 Count all sessions in use
23033 ------------------------------------------------------------------------*/
23034 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23035 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023036 if ( macBSSID && skipBSSID &&
23037 (eWLAN_PAL_TRUE ==
23038 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23039 WDI_MAC_ADDR_LEN)))
23040 {
23041 continue;
23042 }
23043 else if ( pWDICtx->aBSSSessions[i].bInUse )
23044 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023045 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023046 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023047 }
23048
Jeff Johnsone7245742012-09-05 17:12:55 -070023049 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023050}/*WDI_GetActiveSessionsCount*/
23051
23052/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023053 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023054 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023055
23056
23057 @param pWDICtx: pointer to the WLAN DAL context
23058 pSession: pointer to the session (if found)
23059
Jeff Johnson295189b2012-06-20 16:38:30 -070023060 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023061 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023062*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023063void
Jeff Johnson295189b2012-06-20 16:38:30 -070023064WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023065(
Jeff Johnson295189b2012-06-20 16:38:30 -070023066 WDI_ControlBlockType* pWDICtx,
23067 WDI_BSSSessionType* ppSession
23068)
23069{
23070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 -------------------------------------------------------------------------*/
23073 if ( NULL == ppSession )
23074 {
23075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023076 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023077 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023078 }
23079
Jeff Johnsone7245742012-09-05 17:12:55 -070023080 /*------------------------------------------------------------------------
23081 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023082 ------------------------------------------------------------------------*/
23083 wpal_list_destroy(&ppSession->wptPendingQueue);
23084 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023085 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23086 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23088 wpal_list_init(&ppSession->wptPendingQueue);
23089
23090}/*WDI_DeleteSession*/
23091
23092/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023093 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023094 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023095 @param
23096
Jeff Johnson295189b2012-06-20 16:38:30 -070023097 WDI_AddStaParams: - pointer to the WDI Add STA params
23098 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023099
23100 @see
23101 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023102*/
23103void
23104WDI_AddBcastSTAtoSTATable
23105(
23106 WDI_ControlBlockType* pWDICtx,
23107 WDI_AddStaParams * staParams,
23108 wpt_uint16 usBcastStaIdx
23109)
23110{
23111 WDI_AddStaParams wdiAddSTAParam = {0};
23112 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23114
23115 /*---------------------------------------------------------------------
23116 Sanity check
23117 ---------------------------------------------------------------------*/
23118 if ( NULL == staParams )
23119 {
23120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023122
Jeff Johnsone7245742012-09-05 17:12:55 -070023123 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023124 }
23125
23126 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23127 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23128 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23129 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23130 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23131 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23132 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23133 WDI_MAC_ADDR_LEN );
23134 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23135 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23136 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23137 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23138 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23139 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23140 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023141
Jeff Johnson295189b2012-06-20 16:38:30 -070023142 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23143}
23144
23145/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023146 @brief NV blob will be divided into fragments of size 4kb and
23147 Sent to HAL
23148
23149 @param pWDICtx: pointer to the WLAN DAL context
23150 pEventData: pointer to the event information structure
23151
Jeff Johnson295189b2012-06-20 16:38:30 -070023152 @see
23153 @return Result of the function call
23154 */
23155
23156WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023157(
Jeff Johnson295189b2012-06-20 16:38:30 -070023158 WDI_ControlBlockType* pWDICtx,
23159 WDI_EventInfoType* pEventData
23160)
23161{
23162
23163 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23164 wpt_uint8* pSendBuffer = NULL;
23165 wpt_uint16 usDataOffset = 0;
23166 wpt_uint16 usSendSize = 0;
23167 wpt_uint16 usCurrentFragmentSize =0;
23168 wpt_uint8* pSrcBuffer = NULL;
23169 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23170 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23171
23172 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23173 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23174 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23175
Jeff Johnsone7245742012-09-05 17:12:55 -070023176 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023177 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23178
23179 /* Update the current Fragment Number */
23180 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23181
23182 /*Update the HAL REQ structure */
23183 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23184 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23185 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23186
23187 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023188 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023189 image will be sent to HAL*/
23190
Jeff Johnsone7245742012-09-05 17:12:55 -070023191 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023192 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023193 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023194 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023195 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023196 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23197 usCurrentFragmentSize = FRAGMENT_SIZE;
23198
23199 /*Update the HAL REQ structure */
23200 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23201 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23202
23203 }
23204 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023205 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023206 usCurrentFragmentSize = FRAGMENT_SIZE;
23207
23208 /*Update the HAL REQ structure */
23209 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23210 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23211 }
23212
23213 /*-----------------------------------------------------------------------
23214 Get message buffer
23215 -----------------------------------------------------------------------*/
23216 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23217 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23218 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023219 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023220 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23221 {
23222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023223 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023224 pEventData, pwdiNvDownloadReqParams);
23225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023227 }
23228
23229 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023230 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023231 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23232
23233 /* Appending the NV image fragment */
23234 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23235 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23236 usCurrentFragmentSize);
23237
23238 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023239 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023240
Jeff Johnsone7245742012-09-05 17:12:55 -070023241 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23242 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023243 WDI_NV_DOWNLOAD_RESP);
23244
23245}
Jeff Johnsone7245742012-09-05 17:12:55 -070023246/*============================================================================
23247 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023248 ============================================================================*/
23249/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023250 @brief Helper routine used to find a session based on the BSSID
23251 @param pContext: pointer to the WLAN DAL context
23252 @param pDPContext: pointer to the Datapath context
23253
Jeff Johnson295189b2012-06-20 16:38:30 -070023254 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023255 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023256*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023257WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023258WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23259{
23260 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23261
23262 pCB->pDPContext = pDPContext;
23263 return;
23264}
23265
23266/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023267 @brief Helper routine used to find a session based on the BSSID
23268
23269
23270 @param pContext: pointer to the WLAN DAL context
23271
Jeff Johnson295189b2012-06-20 16:38:30 -070023272 @see
23273 @return pointer to Datapath context
23274*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023275WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023276WDI_DS_GetDatapathContext (void *pContext)
23277{
23278 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23279 return pCB->pDPContext;
23280}
23281/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023282 @brief Helper routine used to find a session based on the BSSID
23283
23284
23285 @param pContext: pointer to the WLAN DAL context
23286 @param pDTDriverContext: pointer to the Transport Driver context
23287
Jeff Johnson295189b2012-06-20 16:38:30 -070023288 @see
23289 @return void
23290*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023291WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023292WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23293{
23294 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23295
23296 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023297 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023298}
23299
23300/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023301 @brief Helper routine used to find a session based on the BSSID
23302
23303
23304 @param pWDICtx: pointer to the WLAN DAL context
23305
Jeff Johnson295189b2012-06-20 16:38:30 -070023306 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023307 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023308*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023309WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023310WDT_GetTransportDriverContext (void *pContext)
23311{
23312 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023313 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023314}
23315
Jeff Johnsone7245742012-09-05 17:12:55 -070023316/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023317 Helper inline converters
23318 ============================================================================*/
23319/*Convert WDI driver type into HAL driver type*/
23320WPT_STATIC WPT_INLINE WDI_Status
23321WDI_HAL_2_WDI_STATUS
23322(
23323 eHalStatus halStatus
23324)
23325{
Jeff Johnsone7245742012-09-05 17:12:55 -070023326 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023327 the chances of getting inlined*/
23328 switch( halStatus )
23329 {
23330 case eHAL_STATUS_SUCCESS:
23331 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23332 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23333 return WDI_STATUS_SUCCESS;
23334 case eHAL_STATUS_FAILURE:
23335 return WDI_STATUS_E_FAILURE;
23336 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023337 return WDI_STATUS_MEM_FAILURE;
23338 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023339 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023340 default:
23341 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23342 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023343
Jeff Johnsone7245742012-09-05 17:12:55 -070023344 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023345}/*WDI_HAL_2_WDI_STATUS*/
23346
23347/*Convert WDI request type into HAL request type*/
23348WPT_STATIC WPT_INLINE tHalHostMsgType
23349WDI_2_HAL_REQ_TYPE
23350(
23351 WDI_RequestEnumType wdiReqType
23352)
23353{
Jeff Johnsone7245742012-09-05 17:12:55 -070023354 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023355 the chances of getting inlined*/
23356 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023357 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023358 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023359 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023360 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023361 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023362 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023363 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023364 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023365 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023366 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023367 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023368 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023369 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023370 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023371 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023372 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023373 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023374 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023375 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023376 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023379 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023380 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023381 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023382 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023383 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023385 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023386 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023387 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023388 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023389 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023390 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023391 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023392 return WLAN_HAL_RMV_STAKEY_REQ;
23393 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023394 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023395 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023396 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023397 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023398 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023399 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023400 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023401 case WDI_DEL_BA_REQ:
23402 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023403#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023404 case WDI_TSM_STATS_REQ:
23405 return WLAN_HAL_TSM_STATS_REQ;
23406#endif
23407 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023408 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023409 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023410 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023411 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023412 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023413 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023414 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023415 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023416 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023417 case WDI_ADD_BA_SESSION_REQ:
23418 return WLAN_HAL_ADD_BA_SESSION_REQ;
23419 case WDI_TRIGGER_BA_REQ:
23420 return WLAN_HAL_TRIGGER_BA_REQ;
23421 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023422 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023423 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023424 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023425 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23426 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23427 case WDI_SET_MAX_TX_POWER_REQ:
23428 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023429 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23430 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023431 case WDI_SET_TX_POWER_REQ:
23432 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023433 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23434 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023435#ifdef FEATURE_WLAN_TDLS
23436 case WDI_TDLS_LINK_ESTABLISH_REQ:
23437 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
23438#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023440 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023441 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023442 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023443 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023444 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023445 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023446 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023447 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023448 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023449 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023450 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023451 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023452 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023453 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023454 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023455 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023456 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023457 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023458 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023459 case WDI_REM_BEACON_FILTER_REQ:
23460 return WLAN_HAL_REM_BCN_FILTER_REQ;
23461 case WDI_SET_RSSI_THRESHOLDS_REQ:
23462 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23463 case WDI_HOST_OFFLOAD_REQ:
23464 return WLAN_HAL_HOST_OFFLOAD_REQ;
23465 case WDI_WOWL_ADD_BC_PTRN_REQ:
23466 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23467 case WDI_WOWL_DEL_BC_PTRN_REQ:
23468 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23469 case WDI_WOWL_ENTER_REQ:
23470 return WLAN_HAL_ENTER_WOWL_REQ;
23471 case WDI_WOWL_EXIT_REQ:
23472 return WLAN_HAL_EXIT_WOWL_REQ;
23473 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23474 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23475 case WDI_NV_DOWNLOAD_REQ:
23476 return WLAN_HAL_DOWNLOAD_NV_REQ;
23477 case WDI_FLUSH_AC_REQ:
23478 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23479 case WDI_BTAMP_EVENT_REQ:
23480 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23481#ifdef WLAN_FEATURE_VOWIFI_11R
23482 case WDI_AGGR_ADD_TS_REQ:
23483 return WLAN_HAL_AGGR_ADD_TS_REQ;
23484#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023485 case WDI_FTM_CMD_REQ:
23486 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023487 case WDI_ADD_STA_SELF_REQ:
23488 return WLAN_HAL_ADD_STA_SELF_REQ;
23489 case WDI_DEL_STA_SELF_REQ:
23490 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023491#ifdef FEATURE_OEM_DATA_SUPPORT
23492 case WDI_START_OEM_DATA_REQ:
23493 return WLAN_HAL_START_OEM_DATA_REQ;
23494#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023495 case WDI_HOST_RESUME_REQ:
23496 return WLAN_HAL_HOST_RESUME_REQ;
23497 case WDI_HOST_SUSPEND_IND:
23498 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023499 case WDI_TRAFFIC_STATS_IND:
23500 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023501#ifdef WLAN_FEATURE_11W
23502 case WDI_EXCLUDE_UNENCRYPTED_IND:
23503 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23504#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023505 case WDI_KEEP_ALIVE_REQ:
23506 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023507#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023508 case WDI_ROAM_SCAN_OFFLOAD_REQ:
23509 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023510#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023511#ifdef FEATURE_WLAN_SCAN_PNO
23512 case WDI_SET_PREF_NETWORK_REQ:
23513 return WLAN_HAL_SET_PREF_NETWORK_REQ;
23514 case WDI_SET_RSSI_FILTER_REQ:
23515 return WLAN_HAL_SET_RSSI_FILTER_REQ;
23516 case WDI_UPDATE_SCAN_PARAMS_REQ:
23517 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
23518#endif // FEATURE_WLAN_SCAN_PNO
23519 case WDI_SET_TX_PER_TRACKING_REQ:
23520 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
23521#ifdef WLAN_FEATURE_PACKET_FILTERING
23522 case WDI_8023_MULTICAST_LIST_REQ:
23523 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
23524 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023525 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23527 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
23528 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23529 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
23530#endif // WLAN_FEATURE_PACKET_FILTERING
23531 case WDI_HAL_DUMP_CMD_REQ:
23532 return WLAN_HAL_DUMP_COMMAND_REQ;
23533#ifdef WLAN_FEATURE_GTK_OFFLOAD
23534 case WDI_GTK_OFFLOAD_REQ:
23535 return WLAN_HAL_GTK_OFFLOAD_REQ;
23536 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23537 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
23538#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23539
23540 case WDI_INIT_SCAN_CON_REQ:
23541 return WLAN_HAL_INIT_SCAN_CON_REQ;
23542 case WDI_SET_POWER_PARAMS_REQ:
23543 return WLAN_HAL_SET_POWER_PARAMS_REQ;
23544 case WDI_SET_TM_LEVEL_REQ:
23545 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
23546 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
23547 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023548#ifdef WLAN_FEATURE_11AC
23549 case WDI_UPDATE_VHT_OP_MODE_REQ:
23550 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
23551#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023552 case WDI_GET_ROAM_RSSI_REQ:
23553 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053023554 case WDI_DHCP_START_IND:
23555 return WLAN_HAL_DHCP_START_IND;
23556 case WDI_DHCP_STOP_IND:
23557 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023558#ifdef FEATURE_WLAN_LPHB
23559 case WDI_LPHB_CFG_REQ:
23560 return WLAN_HAL_LPHB_CFG_REQ;
23561#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070023562 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
23563 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
23564 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
23565 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
23566
Rajeev79dbe4c2013-10-05 11:03:42 +053023567#ifdef FEATURE_WLAN_BATCH_SCAN
23568 case WDI_SET_BATCH_SCAN_REQ:
23569 return WLAN_HAL_BATCHSCAN_SET_REQ;
23570 case WDI_STOP_BATCH_SCAN_IND:
23571 return WLAN_HAL_BATCHSCAN_STOP_IND;
23572 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
23573 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
23574#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070023575 case WDI_RATE_UPDATE_IND:
23576 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053023577 case WDI_START_HT40_OBSS_SCAN_IND:
23578 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
23579 case WDI_STOP_HT40_OBSS_SCAN_IND:
23580 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023581 case WDI_UPDATE_CHAN_REQ:
23582 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080023583 case WDI_CH_SWITCH_REQ_V1:
23584 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053023585 case WDI_GET_BCN_MISS_RATE_REQ:
23586 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023587
23588#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23589 case WDI_LL_STATS_SET_REQ:
23590 return WLAN_HAL_LL_SET_STATS_REQ;
23591 case WDI_LL_STATS_GET_REQ:
23592 return WLAN_HAL_LL_GET_STATS_REQ;
23593 case WDI_LL_STATS_CLEAR_REQ:
23594 return WLAN_HAL_LL_CLEAR_STATS_REQ;
23595#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053023596#ifdef WLAN_FEATURE_EXTSCAN
23597 case WDI_EXTSCAN_START_REQ:
23598 return WLAN_HAL_EXT_SCAN_START_REQ;
23599 case WDI_EXTSCAN_STOP_REQ:
23600 return WLAN_HAL_EXT_SCAN_STOP_REQ;
23601 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
23602 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
23603 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
23604 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
23605 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
23606 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
23607 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
23608 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
23609 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
23610 return WLAN_HAL_SIG_RSSI_SET_REQ;
23611 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
23612 return WLAN_HAL_SIG_RSSI_RESET_REQ;
23613#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -070023614 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023615 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023616 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023617
Jeff Johnson295189b2012-06-20 16:38:30 -070023618}/*WDI_2_HAL_REQ_TYPE*/
23619
23620/*Convert WDI response type into HAL response type*/
23621WPT_STATIC WPT_INLINE WDI_ResponseEnumType
23622HAL_2_WDI_RSP_TYPE
23623(
23624 tHalHostMsgType halMsg
23625)
23626{
Jeff Johnsone7245742012-09-05 17:12:55 -070023627 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023628 the chances of getting inlined*/
23629 switch( halMsg )
23630 {
23631 case WLAN_HAL_START_RSP:
23632 return WDI_START_RESP;
23633 case WLAN_HAL_STOP_RSP:
23634 return WDI_STOP_RESP;
23635 case WLAN_HAL_INIT_SCAN_RSP:
23636 return WDI_INIT_SCAN_RESP;
23637 case WLAN_HAL_START_SCAN_RSP:
23638 return WDI_START_SCAN_RESP;
23639 case WLAN_HAL_END_SCAN_RSP:
23640 return WDI_END_SCAN_RESP;
23641 case WLAN_HAL_FINISH_SCAN_RSP:
23642 return WDI_FINISH_SCAN_RESP;
23643 case WLAN_HAL_CONFIG_STA_RSP:
23644 return WDI_CONFIG_STA_RESP;
23645 case WLAN_HAL_DELETE_STA_RSP:
23646 return WDI_DEL_STA_RESP;
23647 case WLAN_HAL_CONFIG_BSS_RSP:
23648 return WDI_CONFIG_BSS_RESP;
23649 case WLAN_HAL_DELETE_BSS_RSP:
23650 return WDI_DEL_BSS_RESP;
23651 case WLAN_HAL_JOIN_RSP:
23652 return WDI_JOIN_RESP;
23653 case WLAN_HAL_POST_ASSOC_RSP:
23654 return WDI_POST_ASSOC_RESP;
23655 case WLAN_HAL_SET_BSSKEY_RSP:
23656 return WDI_SET_BSS_KEY_RESP;
23657 case WLAN_HAL_SET_STAKEY_RSP:
23658 return WDI_SET_STA_KEY_RESP;
23659 case WLAN_HAL_RMV_BSSKEY_RSP:
23660 return WDI_RMV_BSS_KEY_RESP;
23661 case WLAN_HAL_RMV_STAKEY_RSP:
23662 return WDI_RMV_STA_KEY_RESP;
23663 case WLAN_HAL_SET_BCASTKEY_RSP:
23664 return WDI_SET_STA_BCAST_KEY_RESP;
23665 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
23666 // return WDI_RMV_STA_BCAST_KEY_RESP;
23667 case WLAN_HAL_ADD_TS_RSP:
23668 return WDI_ADD_TS_RESP;
23669 case WLAN_HAL_DEL_TS_RSP:
23670 return WDI_DEL_TS_RESP;
23671 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
23672 return WDI_UPD_EDCA_PRMS_RESP;
23673 case WLAN_HAL_ADD_BA_RSP:
23674 return WDI_ADD_BA_RESP;
23675 case WLAN_HAL_DEL_BA_RSP:
23676 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023677#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023678 case WLAN_HAL_TSM_STATS_RSP:
23679 return WDI_TSM_STATS_RESP;
23680#endif
23681 case WLAN_HAL_CH_SWITCH_RSP:
23682 return WDI_CH_SWITCH_RESP;
23683 case WLAN_HAL_SET_LINK_ST_RSP:
23684 return WDI_SET_LINK_ST_RESP;
23685 case WLAN_HAL_GET_STATS_RSP:
23686 return WDI_GET_STATS_RESP;
23687 case WLAN_HAL_UPDATE_CFG_RSP:
23688 return WDI_UPDATE_CFG_RESP;
23689 case WLAN_HAL_ADD_BA_SESSION_RSP:
23690 return WDI_ADD_BA_SESSION_RESP;
23691 case WLAN_HAL_TRIGGER_BA_RSP:
23692 return WDI_TRIGGER_BA_RESP;
23693 case WLAN_HAL_UPDATE_BEACON_RSP:
23694 return WDI_UPD_BCON_PRMS_RESP;
23695 case WLAN_HAL_SEND_BEACON_RSP:
23696 return WDI_SND_BCON_RESP;
23697 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23698 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23699 /*Indications*/
23700 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23701 return WDI_HAL_RSSI_NOTIFICATION_IND;
23702 case WLAN_HAL_MISSED_BEACON_IND:
23703 return WDI_HAL_MISSED_BEACON_IND;
23704 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23705 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23706 case WLAN_HAL_MIC_FAILURE_IND:
23707 return WDI_HAL_MIC_FAILURE_IND;
23708 case WLAN_HAL_FATAL_ERROR_IND:
23709 return WDI_HAL_FATAL_ERROR_IND;
23710 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23711 return WDI_HAL_DEL_STA_IND;
23712 case WLAN_HAL_COEX_IND:
23713 return WDI_HAL_COEX_IND;
23714 case WLAN_HAL_OTA_TX_COMPL_IND:
23715 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023716 case WLAN_HAL_P2P_NOA_ATTR_IND:
23717 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080023718 case WLAN_HAL_P2P_NOA_START_IND:
23719 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023720 case WLAN_HAL_TX_PER_HIT_IND:
23721 return WDI_HAL_TX_PER_HIT_IND;
23722 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23723 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023724 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23725 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070023726 case WLAN_HAL_SET_TX_POWER_RSP:
23727 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023728 case WLAN_HAL_SET_P2P_GONOA_RSP:
23729 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023730#ifdef FEATURE_WLAN_TDLS
23731 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23732 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
23733 case WLAN_HAL_TDLS_IND:
23734 return WDI_HAL_TDLS_IND;
23735#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023736 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023737 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023738 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023739 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023740 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023741 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023742 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023745 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023746 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023747 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023748 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023749 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023750 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023751 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023752 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023753 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023754 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23755 return WDI_SET_BEACON_FILTER_RESP;
23756 case WLAN_HAL_REM_BCN_FILTER_RSP:
23757 return WDI_REM_BEACON_FILTER_RESP;
23758 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23759 return WDI_SET_RSSI_THRESHOLDS_RESP;
23760 case WLAN_HAL_HOST_OFFLOAD_RSP:
23761 return WDI_HOST_OFFLOAD_RESP;
23762 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23763 return WDI_WOWL_ADD_BC_PTRN_RESP;
23764 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23765 return WDI_WOWL_DEL_BC_PTRN_RESP;
23766 case WLAN_HAL_ENTER_WOWL_RSP:
23767 return WDI_WOWL_ENTER_RESP;
23768 case WLAN_HAL_EXIT_WOWL_RSP:
23769 return WDI_WOWL_EXIT_RESP;
23770 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23771 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23772 case WLAN_HAL_DOWNLOAD_NV_RSP:
23773 return WDI_NV_DOWNLOAD_RESP;
23774 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23775 return WDI_FLUSH_AC_RESP;
23776 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23777 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023778 case WLAN_HAL_PROCESS_PTT_RSP:
23779 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023780 case WLAN_HAL_ADD_STA_SELF_RSP:
23781 return WDI_ADD_STA_SELF_RESP;
23782case WLAN_HAL_DEL_STA_SELF_RSP:
23783 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023784#ifdef FEATURE_OEM_DATA_SUPPORT
23785 case WLAN_HAL_START_OEM_DATA_RSP:
23786 return WDI_START_OEM_DATA_RESP;
23787#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 case WLAN_HAL_HOST_RESUME_RSP:
23789 return WDI_HOST_RESUME_RESP;
23790 case WLAN_HAL_KEEP_ALIVE_RSP:
23791 return WDI_KEEP_ALIVE_RESP;
23792#ifdef FEATURE_WLAN_SCAN_PNO
23793 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23794 return WDI_SET_PREF_NETWORK_RESP;
23795 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023796 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23798 return WDI_UPDATE_SCAN_PARAMS_RESP;
23799 case WLAN_HAL_PREF_NETW_FOUND_IND:
23800 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23801#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023802#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023803 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23804 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023805#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023806 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23807 return WDI_SET_TX_PER_TRACKING_RESP;
23808#ifdef WLAN_FEATURE_PACKET_FILTERING
23809 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23810 return WDI_8023_MULTICAST_LIST_RESP;
23811 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23812 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23813 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23814 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23815 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23816 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23817#endif // WLAN_FEATURE_PACKET_FILTERING
23818
23819 case WLAN_HAL_DUMP_COMMAND_RSP:
23820 return WDI_HAL_DUMP_CMD_RESP;
23821 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23822 return WDI_SET_POWER_PARAMS_RESP;
23823#ifdef WLAN_FEATURE_VOWIFI_11R
23824 case WLAN_HAL_AGGR_ADD_TS_RSP:
23825 return WDI_AGGR_ADD_TS_RESP;
23826#endif
23827
23828#ifdef WLAN_FEATURE_GTK_OFFLOAD
23829 case WLAN_HAL_GTK_OFFLOAD_RSP:
23830 return WDI_GTK_OFFLOAD_RESP;
23831 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23832 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23833#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23834#ifdef WLAN_WAKEUP_EVENTS
23835 case WLAN_HAL_WAKE_REASON_IND:
23836 return WDI_HAL_WAKE_REASON_IND;
23837#endif // WLAN_WAKEUP_EVENTS
23838
23839 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23840 return WDI_SET_TM_LEVEL_RESP;
23841 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23842 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023843#ifdef WLAN_FEATURE_11AC
23844 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23845 return WDI_UPDATE_VHT_OP_MODE_RESP;
23846#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023847#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023848 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23849 return WDI_GET_ROAM_RSSI_RESP;
23850#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023851
Leo Chang9056f462013-08-01 19:21:11 -070023852#ifdef FEATURE_WLAN_LPHB
23853 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070023854 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023855 case WLAN_HAL_LPHB_CFG_RSP:
23856 return WDI_LPHB_CFG_RESP;
23857#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023858
23859 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23860 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070023861 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23862 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023863
Rajeev79dbe4c2013-10-05 11:03:42 +053023864#ifdef FEATURE_WLAN_BATCH_SCAN
23865 case WLAN_HAL_BATCHSCAN_SET_RSP:
23866 return WDI_SET_BATCH_SCAN_RESP;
23867 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23868 return WDI_BATCHSCAN_RESULT_IND;
23869#endif // FEATURE_WLAN_BATCH_SCAN
23870
Leo Chang0b0e45a2013-12-15 15:18:55 -080023871#ifdef FEATURE_WLAN_CH_AVOID
23872 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23873 return WDI_HAL_CH_AVOID_IND;
23874#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023875 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
23876 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053023877 case WLAN_HAL_PRINT_REG_INFO_IND:
23878 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053023879 case WLAN_HAL_CH_SWITCH_V1_RSP:
23880 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053023881 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
23882 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023883#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23884 case WLAN_HAL_LL_SET_STATS_RSP:
23885 return WDI_LL_STATS_SET_RSP;
23886 case WLAN_HAL_LL_GET_STATS_RSP:
23887 return WDI_LL_STATS_GET_RSP;
23888 case WLAN_HAL_LL_CLEAR_STATS_RSP:
23889 return WDI_LL_STATS_CLEAR_RSP;
23890 case WLAN_HAL_LL_NOTIFY_STATS:
23891 return WDI_HAL_LL_STATS_RESULTS_IND;
23892#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053023893#ifdef WLAN_FEATURE_EXTSCAN
23894 case WLAN_HAL_EXT_SCAN_START_RSP:
23895 return WDI_EXTSCAN_START_RSP;
23896 case WLAN_HAL_EXT_SCAN_STOP_RSP:
23897 return WDI_EXTSCAN_STOP_RSP;
23898 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
23899 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
23900 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
23901 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
23902 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
23903 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
23904 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
23905 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
23906 case WLAN_HAL_SIG_RSSI_SET_RSP:
23907 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
23908 case WLAN_HAL_SIG_RSSI_RESET_RSP:
23909 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
23910 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
23911 return WDI_HAL_EXTSCAN_PROGRESS_IND;
23912 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
23913 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
23914 case WLAN_HAL_EXT_SCAN_RESULT_IND:
23915 return WDI_HAL_EXTSCAN_RESULT_IND;
23916 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
23917 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
23918 case WLAN_HAL_SIG_RSSI_RESULT_IND:
23919 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
23920#endif /* WLAN_FEATURE_EXTSCAN */
23921
Jeff Johnson295189b2012-06-20 16:38:30 -070023922 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023923 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023924 }
23925
23926}/*HAL_2_WDI_RSP_TYPE*/
23927
23928
23929/*Convert WDI driver type into HAL driver type*/
23930WPT_STATIC WPT_INLINE tDriverType
23931WDI_2_HAL_DRV_TYPE
23932(
23933 WDI_DriverType wdiDriverType
23934)
23935{
Jeff Johnsone7245742012-09-05 17:12:55 -070023936 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023937 the chances of getting inlined*/
23938 switch( wdiDriverType )
23939 {
23940 case WDI_DRIVER_TYPE_PRODUCTION:
23941 return eDRIVER_TYPE_PRODUCTION;
23942 case WDI_DRIVER_TYPE_MFG:
23943 return eDRIVER_TYPE_MFG;
23944 case WDI_DRIVER_TYPE_DVT:
23945 return eDRIVER_TYPE_DVT;
23946 }
23947
Jeff Johnsone7245742012-09-05 17:12:55 -070023948 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023949}/*WDI_2_HAL_DRV_TYPE*/
23950
23951
23952/*Convert WDI stop reason into HAL stop reason*/
23953WPT_STATIC WPT_INLINE tHalStopType
23954WDI_2_HAL_STOP_REASON
23955(
23956 WDI_StopType wdiDriverType
23957)
23958{
Jeff Johnsone7245742012-09-05 17:12:55 -070023959 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 the chances of getting inlined*/
23961 switch( wdiDriverType )
23962 {
23963 case WDI_STOP_TYPE_SYS_RESET:
23964 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070023965 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23966 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 case WDI_STOP_TYPE_RF_KILL:
23968 return HAL_STOP_TYPE_RF_KILL;
23969 }
23970
Jeff Johnsone7245742012-09-05 17:12:55 -070023971 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023972}/*WDI_2_HAL_STOP_REASON*/
23973
23974
23975/*Convert WDI scan mode type into HAL scan mode type*/
23976WPT_STATIC WPT_INLINE eHalSysMode
23977WDI_2_HAL_SCAN_MODE
23978(
23979 WDI_ScanMode wdiScanMode
23980)
23981{
Jeff Johnsone7245742012-09-05 17:12:55 -070023982 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023983 the chances of getting inlined*/
23984 switch( wdiScanMode )
23985 {
23986 case WDI_SCAN_MODE_NORMAL:
23987 return eHAL_SYS_MODE_NORMAL;
23988 case WDI_SCAN_MODE_LEARN:
23989 return eHAL_SYS_MODE_LEARN;
23990 case WDI_SCAN_MODE_SCAN:
23991 return eHAL_SYS_MODE_SCAN;
23992 case WDI_SCAN_MODE_PROMISC:
23993 return eHAL_SYS_MODE_PROMISC;
23994 case WDI_SCAN_MODE_SUSPEND_LINK:
23995 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023996 case WDI_SCAN_MODE_ROAM_SCAN:
23997 return eHAL_SYS_MODE_ROAM_SCAN;
23998 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23999 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024000 }
24001
Jeff Johnsone7245742012-09-05 17:12:55 -070024002 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024003}/*WDI_2_HAL_SCAN_MODE*/
24004
24005/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024006WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024007WDI_2_HAL_SEC_CH_OFFSET
24008(
24009 WDI_HTSecondaryChannelOffset wdiSecChOffset
24010)
24011{
Jeff Johnsone7245742012-09-05 17:12:55 -070024012 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 the chances of getting inlined*/
24014 switch( wdiSecChOffset )
24015 {
24016 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024017 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024018 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024019 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024020 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024021 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24022#ifdef WLAN_FEATURE_11AC
24023 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24024 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24025 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24026 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24027 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24028 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24029 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24030 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24031 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24032 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24033 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24034 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24035 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24036 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24037#endif
24038 default:
24039 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 }
24041
Jeff Johnsone7245742012-09-05 17:12:55 -070024042 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024043}/*WDI_2_HAL_SEC_CH_OFFSET*/
24044
24045/*Convert WDI BSS type into HAL BSS type*/
24046WPT_STATIC WPT_INLINE tSirBssType
24047WDI_2_HAL_BSS_TYPE
24048(
24049 WDI_BssType wdiBSSType
24050)
24051{
Jeff Johnsone7245742012-09-05 17:12:55 -070024052 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024053 the chances of getting inlined*/
24054 switch( wdiBSSType )
24055 {
24056 case WDI_INFRASTRUCTURE_MODE:
24057 return eSIR_INFRASTRUCTURE_MODE;
24058 case WDI_INFRA_AP_MODE:
24059 return eSIR_INFRA_AP_MODE;
24060 case WDI_IBSS_MODE:
24061 return eSIR_IBSS_MODE;
24062 case WDI_BTAMP_STA_MODE:
24063 return eSIR_BTAMP_STA_MODE;
24064 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024065 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024066 case WDI_BSS_AUTO_MODE:
24067 return eSIR_AUTO_MODE;
24068 }
24069
Jeff Johnsone7245742012-09-05 17:12:55 -070024070 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024071}/*WDI_2_HAL_BSS_TYPE*/
24072
24073/*Convert WDI NW type into HAL NW type*/
24074WPT_STATIC WPT_INLINE tSirNwType
24075WDI_2_HAL_NW_TYPE
24076(
24077 WDI_NwType wdiNWType
24078)
24079{
Jeff Johnsone7245742012-09-05 17:12:55 -070024080 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024081 the chances of getting inlined*/
24082 switch( wdiNWType )
24083 {
24084 case WDI_11A_NW_TYPE:
24085 return eSIR_11A_NW_TYPE;
24086 case WDI_11B_NW_TYPE:
24087 return eSIR_11B_NW_TYPE;
24088 case WDI_11G_NW_TYPE:
24089 return eSIR_11G_NW_TYPE;
24090 case WDI_11N_NW_TYPE:
24091 return eSIR_11N_NW_TYPE;
24092 }
24093
Jeff Johnsone7245742012-09-05 17:12:55 -070024094 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024095}/*WDI_2_HAL_NW_TYPE*/
24096
24097/*Convert WDI chanel bonding type into HAL cb type*/
24098WPT_STATIC WPT_INLINE ePhyChanBondState
24099WDI_2_HAL_CB_STATE
24100(
24101 WDI_PhyChanBondState wdiCbState
24102)
24103{
Jeff Johnsone7245742012-09-05 17:12:55 -070024104 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024105 the chances of getting inlined*/
24106 switch ( wdiCbState )
24107 {
24108 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24109 return PHY_SINGLE_CHANNEL_CENTERED;
24110 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24111 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24112 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24113 return PHY_DOUBLE_CHANNEL_CENTERED;
24114 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24115 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024116#ifdef WLAN_FEATURE_11AC
24117 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24118 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24119 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24120 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24121 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24122 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24123 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24124 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24125 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24126 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24127 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24128 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24129 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24130 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24131#endif
24132 case WDI_MAX_CB_STATE:
24133 default:
24134 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024135 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024136
Jeff Johnson295189b2012-06-20 16:38:30 -070024137 return PHY_CHANNEL_BONDING_STATE_MAX;
24138}/*WDI_2_HAL_CB_STATE*/
24139
24140/*Convert WDI chanel bonding type into HAL cb type*/
24141WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24142WDI_2_HAL_HT_OPER_MODE
24143(
24144 WDI_HTOperatingMode wdiHTOperMode
24145)
24146{
Jeff Johnsone7245742012-09-05 17:12:55 -070024147 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024148 the chances of getting inlined*/
24149 switch ( wdiHTOperMode )
24150 {
24151 case WDI_HT_OP_MODE_PURE:
24152 return eSIR_HT_OP_MODE_PURE;
24153 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24154 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24155 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24156 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24157 case WDI_HT_OP_MODE_MIXED:
24158 return eSIR_HT_OP_MODE_MIXED;
24159 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024160
Jeff Johnson295189b2012-06-20 16:38:30 -070024161 return eSIR_HT_OP_MODE_MAX;
24162}/*WDI_2_HAL_HT_OPER_MODE*/
24163
24164/*Convert WDI mimo PS type into HAL mimo PS type*/
24165WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24166WDI_2_HAL_MIMO_PS
24167(
24168 WDI_HTMIMOPowerSaveState wdiHTOperMode
24169)
24170{
Jeff Johnsone7245742012-09-05 17:12:55 -070024171 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024172 the chances of getting inlined*/
24173 switch ( wdiHTOperMode )
24174 {
24175 case WDI_HT_MIMO_PS_STATIC:
24176 return eSIR_HT_MIMO_PS_STATIC;
24177 case WDI_HT_MIMO_PS_DYNAMIC:
24178 return eSIR_HT_MIMO_PS_DYNAMIC;
24179 case WDI_HT_MIMO_PS_NA:
24180 return eSIR_HT_MIMO_PS_NA;
24181 case WDI_HT_MIMO_PS_NO_LIMIT:
24182 return eSIR_HT_MIMO_PS_NO_LIMIT;
24183 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024184
Jeff Johnson295189b2012-06-20 16:38:30 -070024185 return eSIR_HT_MIMO_PS_MAX;
24186}/*WDI_2_HAL_MIMO_PS*/
24187
24188/*Convert WDI ENC type into HAL ENC type*/
24189WPT_STATIC WPT_INLINE tAniEdType
24190WDI_2_HAL_ENC_TYPE
24191(
24192 WDI_EncryptType wdiEncType
24193)
24194{
Jeff Johnsone7245742012-09-05 17:12:55 -070024195 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024196 the chances of getting inlined*/
24197 switch ( wdiEncType )
24198 {
24199 case WDI_ENCR_NONE:
24200 return eSIR_ED_NONE;
24201
24202 case WDI_ENCR_WEP40:
24203 return eSIR_ED_WEP40;
24204
24205 case WDI_ENCR_WEP104:
24206 return eSIR_ED_WEP104;
24207
24208 case WDI_ENCR_TKIP:
24209 return eSIR_ED_TKIP;
24210
24211 case WDI_ENCR_CCMP:
24212 return eSIR_ED_CCMP;
24213
24214 case WDI_ENCR_AES_128_CMAC:
24215 return eSIR_ED_AES_128_CMAC;
24216#if defined(FEATURE_WLAN_WAPI)
24217 case WDI_ENCR_WPI:
24218 return eSIR_ED_WPI;
24219#endif
24220 default:
24221 return eSIR_ED_NOT_IMPLEMENTED;
24222 }
24223
24224}/*WDI_2_HAL_ENC_TYPE*/
24225
24226/*Convert WDI WEP type into HAL WEP type*/
24227WPT_STATIC WPT_INLINE tAniWepType
24228WDI_2_HAL_WEP_TYPE
24229(
24230 WDI_WepType wdiWEPType
24231)
24232{
Jeff Johnsone7245742012-09-05 17:12:55 -070024233 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024234 the chances of getting inlined*/
24235 switch ( wdiWEPType )
24236 {
24237 case WDI_WEP_STATIC:
24238 return eSIR_WEP_STATIC;
24239
24240 case WDI_WEP_DYNAMIC:
24241 return eSIR_WEP_DYNAMIC;
24242 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024243
Jeff Johnson295189b2012-06-20 16:38:30 -070024244 return eSIR_WEP_MAX;
24245}/*WDI_2_HAL_WEP_TYPE*/
24246
24247WPT_STATIC WPT_INLINE tSirLinkState
24248WDI_2_HAL_LINK_STATE
24249(
24250 WDI_LinkStateType wdiLinkState
24251)
24252{
Jeff Johnsone7245742012-09-05 17:12:55 -070024253 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024254 the chances of getting inlined*/
24255 switch ( wdiLinkState )
24256 {
24257 case WDI_LINK_IDLE_STATE:
24258 return eSIR_LINK_IDLE_STATE;
24259
24260 case WDI_LINK_PREASSOC_STATE:
24261 return eSIR_LINK_PREASSOC_STATE;
24262
24263 case WDI_LINK_POSTASSOC_STATE:
24264 return eSIR_LINK_POSTASSOC_STATE;
24265
24266 case WDI_LINK_AP_STATE:
24267 return eSIR_LINK_AP_STATE;
24268
24269 case WDI_LINK_IBSS_STATE:
24270 return eSIR_LINK_IBSS_STATE;
24271
24272 case WDI_LINK_BTAMP_PREASSOC_STATE:
24273 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24274
24275 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24276 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24277
24278 case WDI_LINK_BTAMP_AP_STATE:
24279 return eSIR_LINK_BTAMP_AP_STATE;
24280
24281 case WDI_LINK_BTAMP_STA_STATE:
24282 return eSIR_LINK_BTAMP_STA_STATE;
24283
24284 case WDI_LINK_LEARN_STATE:
24285 return eSIR_LINK_LEARN_STATE;
24286
24287 case WDI_LINK_SCAN_STATE:
24288 return eSIR_LINK_SCAN_STATE;
24289
24290 case WDI_LINK_FINISH_SCAN_STATE:
24291 return eSIR_LINK_FINISH_SCAN_STATE;
24292
24293 case WDI_LINK_INIT_CAL_STATE:
24294 return eSIR_LINK_INIT_CAL_STATE;
24295
24296 case WDI_LINK_FINISH_CAL_STATE:
24297 return eSIR_LINK_FINISH_CAL_STATE;
24298
Jeff Johnson295189b2012-06-20 16:38:30 -070024299 case WDI_LINK_LISTEN_STATE:
24300 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024301
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024302 case WDI_LINK_SEND_ACTION_STATE:
24303 return eSIR_LINK_SEND_ACTION_STATE;
24304
Jeff Johnson295189b2012-06-20 16:38:30 -070024305 default:
24306 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024307 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024308}
24309
Jeff Johnsone7245742012-09-05 17:12:55 -070024310/*Translate a STA Context from WDI into HAL*/
24311WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024312void
24313WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024314(
Jeff Johnson295189b2012-06-20 16:38:30 -070024315 tConfigStaParams* phalConfigSta,
24316 WDI_ConfigStaReqInfoType* pwdiConfigSta
24317)
24318{
24319 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024320#ifdef WLAN_FEATURE_11AC
24321 /* Get the Version 1 Handler */
24322 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24323 if (WDI_getFwWlanFeatCaps(DOT11AC))
24324 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024325 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024326 }
24327#endif
24328 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024329 the chances of getting inlined*/
24330
Jeff Johnsone7245742012-09-05 17:12:55 -070024331 wpalMemoryCopy(phalConfigSta->bssId,
24332 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24333
24334 wpalMemoryCopy(phalConfigSta->staMac,
24335 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024336
24337 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24338 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24339 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24340 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24341 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24342 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24343 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24344 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24345 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24346 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24347 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24348 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24349 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24350 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24351 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24352 phalConfigSta->action = pwdiConfigSta->wdiAction;
24353 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24354 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24355 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24356 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24357 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24358 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24359 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070024360
Jeff Johnson295189b2012-06-20 16:38:30 -070024361 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24362
Jeff Johnsone7245742012-09-05 17:12:55 -070024363 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024364 pwdiConfigSta->wdiSupportedRates.opRateMode;
24365 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24366 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024367 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024368 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24369 }
24370 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24371 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024372 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024373 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24374 }
24375 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24376 {
24377 phalConfigSta->supportedRates.aniLegacyRates[i] =
24378 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24379 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024380 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24382 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24383 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024384 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024385 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24386 }
24387 phalConfigSta->supportedRates.rxHighestDataRate =
24388 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24389
Jeff Johnsone7245742012-09-05 17:12:55 -070024390#ifdef WLAN_FEATURE_11AC
24391 if(phalConfigSta_V1 != NULL)
24392 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024393 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24394 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24395 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24396 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024397 }
24398#endif
24399
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024401
Jeff Johnsone7245742012-09-05 17:12:55 -070024402#ifdef WLAN_FEATURE_11AC
24403 if(phalConfigSta_V1 != NULL)
24404 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024405 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24406 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024407 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053024408 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024409 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24410 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24411
Jeff Johnsone7245742012-09-05 17:12:55 -070024412 }
24413#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024414}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024415
24416/*Translate a Rate set info from WDI into HAL*/
24417WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024418WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024419(
Jeff Johnson295189b2012-06-20 16:38:30 -070024420 tSirMacRateSet* pHalRateSet,
24421 WDI_RateSet* pwdiRateSet
24422)
24423{
Jeff Johnsone7245742012-09-05 17:12:55 -070024424 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24426
24427 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24428 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24429
24430 for ( i = 0; i < pHalRateSet->numRates; i++ )
24431 {
24432 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24433 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024434
Jeff Johnson295189b2012-06-20 16:38:30 -070024435}/*WDI_CopyWDIRateSetToHALRateSet*/
24436
24437
24438/*Translate an EDCA Parameter Record from WDI into HAL*/
24439WPT_STATIC WPT_INLINE void
24440WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024441(
Jeff Johnson295189b2012-06-20 16:38:30 -070024442 tSirMacEdcaParamRecord* phalEdcaParam,
24443 WDI_EdcaParamRecord* pWDIEdcaParam
24444)
24445{
Jeff Johnsone7245742012-09-05 17:12:55 -070024446 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024447 the chances of getting inlined*/
24448
24449 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24450 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24451 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24452 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24453
24454 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24455 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24456 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24457}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24458
24459
24460/*Copy a management frame header from WDI fmt into HAL fmt*/
24461WPT_STATIC WPT_INLINE void
24462WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24463(
24464 tSirMacMgmtHdr* pmacMgmtHdr,
24465 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24466)
24467{
24468 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24469 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24470 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24471 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24472 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24473 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24474 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24475 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24476 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
24477 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
24478 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
24479
24480 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
24481 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
24482
Jeff Johnsone7245742012-09-05 17:12:55 -070024483 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070024484 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024485 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070024486 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024487 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024488 pwdiMacMgmtHdr->bssId, 6);
24489
24490 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
24491 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
24492 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
24493
24494}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
24495
24496
24497/*Copy config bss parameters from WDI fmt into HAL fmt*/
24498WPT_STATIC WPT_INLINE void
24499WDI_CopyWDIConfigBSSToHALConfigBSS
24500(
24501 tConfigBssParams* phalConfigBSS,
24502 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
24503)
24504{
24505
24506 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024507#ifdef WLAN_FEATURE_11AC
24508 /* Get the Version 1 Handler */
24509 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
24510 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024511 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070024512#endif
24513
Jeff Johnson295189b2012-06-20 16:38:30 -070024514 wpalMemoryCopy( phalConfigBSS->bssId,
24515 pwdiConfigBSS->macBSSID,
24516 WDI_MAC_ADDR_LEN);
24517
24518#ifdef HAL_SELF_STA_PER_BSS
24519 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
24520 pwdiConfigBSS->macSelfAddr,
24521 WDI_MAC_ADDR_LEN);
24522#endif
24523
24524 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
24525
24526 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
24527 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
24528
Jeff Johnsone7245742012-09-05 17:12:55 -070024529 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070024530 pwdiConfigBSS->ucShortSlotTimeSupported;
24531 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
24532 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
24533 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
24534 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
24535 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070024536 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070024537 pwdiConfigBSS->ucTXOPProtectionFullSupport;
24538 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
24539 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
24540 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
24541 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
24542 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
24543 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
24544 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
24545 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
24546 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
24547 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
24548
Jeff Johnsone7245742012-09-05 17:12:55 -070024549 phalConfigBSS->htOperMode =
24550 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070024551
24552 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
24553 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
24554 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
24555 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
24556
24557#ifdef WLAN_FEATURE_VOWIFI
24558 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
24559#endif
24560
24561 /*! Used 32 as magic number because that is how the ssid is declared inside the
24562 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070024563 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070024564 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
24565 pwdiConfigBSS->wdiSSID.ucLength : 32;
24566 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070024567 pwdiConfigBSS->wdiSSID.sSSID,
24568 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024569
24570 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
24571 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070024572
Jeff Johnson295189b2012-06-20 16:38:30 -070024573 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
24574 &pwdiConfigBSS->wdiRateSet);
24575
24576 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
24577
24578 if(phalConfigBSS->edcaParamsValid)
24579 {
24580 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
24581 &pwdiConfigBSS->wdiBEEDCAParams);
24582 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
24583 &pwdiConfigBSS->wdiBKEDCAParams);
24584 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
24585 &pwdiConfigBSS->wdiVIEDCAParams);
24586 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
24587 &pwdiConfigBSS->wdiVOEDCAParams);
24588 }
24589
Jeff Johnsone7245742012-09-05 17:12:55 -070024590 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070024591
24592 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
24593
24594#ifdef WLAN_FEATURE_VOWIFI_11R
24595
Jeff Johnsone7245742012-09-05 17:12:55 -070024596 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070024597 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070024598
Jeff Johnson295189b2012-06-20 16:38:30 -070024599 if( phalConfigBSS->extSetStaKeyParamValid )
24600 {
24601 /*-----------------------------------------------------------------------
24602 Copy the STA Key parameters into the HAL message
24603 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024604 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024605 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
24606
Jeff Johnsone7245742012-09-05 17:12:55 -070024607 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024608 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
24609
24610 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
24611
24612 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
24613
24614 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
24615
Jeff Johnson295189b2012-06-20 16:38:30 -070024616 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
24617 keyIndex++)
24618 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024619 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070024620 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
24621 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
24622 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
24623 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
24624 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
24625 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070024626 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070024627 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024628 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070024629 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070024630 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070024631 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
24632 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070024633 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070024634 WDI_MAX_KEY_LENGTH);
24635 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024636 }
24637 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
24638 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024639 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070024640 sizeof(phalConfigBSS->extSetStaKeyParam) );
24641 }
24642
24643#endif /*WLAN_FEATURE_VOWIFI_11R*/
24644
Jeff Johnsone7245742012-09-05 17:12:55 -070024645#ifdef WLAN_FEATURE_11AC
24646 if(phalConfigBSS_V1 != NULL)
24647 {
24648 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
24649 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
24650 }
24651#endif
24652
Jeff Johnson295189b2012-06-20 16:38:30 -070024653}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
24654
24655
Jeff Johnsone7245742012-09-05 17:12:55 -070024656/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024657 pointed to by user data */
24658WPT_STATIC WPT_INLINE void
24659WDI_ExtractRequestCBFromEvent
24660(
24661 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070024662 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070024663 void** ppUserData
24664)
24665{
24666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24667 switch ( pEvent->wdiRequest )
24668 {
24669 case WDI_START_REQ:
24670 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24671 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
24672 break;
24673 case WDI_STOP_REQ:
24674 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24675 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
24676 break;
24677 case WDI_INIT_SCAN_REQ:
24678 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24679 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
24680 break;
24681 case WDI_START_SCAN_REQ:
24682 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24683 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
24684 break;
24685 case WDI_END_SCAN_REQ:
24686 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24687 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
24688 break;
24689 case WDI_FINISH_SCAN_REQ:
24690 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24691 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
24692 break;
24693 case WDI_JOIN_REQ:
24694 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24695 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
24696 break;
24697 case WDI_CONFIG_BSS_REQ:
24698 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24699 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
24700 break;
24701 case WDI_DEL_BSS_REQ:
24702 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24703 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
24704 break;
24705 case WDI_POST_ASSOC_REQ:
24706 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24707 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
24708 break;
24709 case WDI_DEL_STA_REQ:
24710 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24711 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
24712 break;
24713 case WDI_DEL_STA_SELF_REQ:
24714 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24715 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
24716 break;
24717
24718 case WDI_SET_BSS_KEY_REQ:
24719 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24720 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24721 break;
24722 case WDI_RMV_BSS_KEY_REQ:
24723 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24724 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24725 break;
24726 case WDI_SET_STA_KEY_REQ:
24727 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24728 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24729 break;
24730 case WDI_RMV_STA_KEY_REQ:
24731 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24732 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24733 break;
24734 case WDI_ADD_TS_REQ:
24735 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24736 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24737 break;
24738 case WDI_DEL_TS_REQ:
24739 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24740 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24741 break;
24742 case WDI_UPD_EDCA_PRMS_REQ:
24743 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24744 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24745 break;
24746 case WDI_ADD_BA_SESSION_REQ:
24747 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24748 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
24749 break;
24750 case WDI_DEL_BA_REQ:
24751 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24752 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
24753 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024754#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024755 case WDI_TSM_STATS_REQ:
24756 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24757 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
24758 break;
24759#endif
24760 case WDI_CH_SWITCH_REQ:
24761 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24762 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
24763 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024764 case WDI_CH_SWITCH_REQ_V1:
24765 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
24766 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
24767 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024768 case WDI_CONFIG_STA_REQ:
24769 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24770 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
24771 break;
24772 case WDI_SET_LINK_ST_REQ:
24773 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24774 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
24775 break;
24776 case WDI_GET_STATS_REQ:
24777 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24778 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
24779 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024780#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024781 case WDI_GET_ROAM_RSSI_REQ:
24782 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24783 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
24784 break;
24785#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024786 case WDI_UPDATE_CFG_REQ:
24787 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24788 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24789 break;
24790 case WDI_ADD_BA_REQ:
24791 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24792 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24793 break;
24794 case WDI_TRIGGER_BA_REQ:
24795 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24796 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24797 break;
24798 case WDI_UPD_BCON_PRMS_REQ:
24799 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24800 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24801 break;
24802 case WDI_SND_BCON_REQ:
24803 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24804 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24805 break;
24806 case WDI_ENTER_BMPS_REQ:
24807 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24808 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24809 break;
24810 case WDI_EXIT_BMPS_REQ:
24811 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24812 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24813 break;
Mihir Shetea4306052014-03-25 00:02:54 +053024814 case WDI_ENTER_IMPS_REQ:
24815 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24816 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
24817 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024818 case WDI_ENTER_UAPSD_REQ:
24819 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24820 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24821 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024822 case WDI_EXIT_UAPSD_REQ:
24823 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24824 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24825 break;
24826 case WDI_SET_UAPSD_PARAM_REQ:
24827 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24828 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24829 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024830 case WDI_UPDATE_UAPSD_PARAM_REQ:
24831 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24832 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24833 break;
24834 case WDI_CONFIGURE_RXP_FILTER_REQ:
24835 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24836 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24837 break;
24838 case WDI_SET_BEACON_FILTER_REQ:
24839 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24840 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24841 break;
24842 case WDI_REM_BEACON_FILTER_REQ:
24843 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24844 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024845 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024846 case WDI_SET_RSSI_THRESHOLDS_REQ:
24847 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24848 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24849 break;
24850 case WDI_HOST_OFFLOAD_REQ:
24851 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24852 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24853 break;
24854 case WDI_WOWL_ADD_BC_PTRN_REQ:
24855 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24856 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24857 break;
24858 case WDI_WOWL_DEL_BC_PTRN_REQ:
24859 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24860 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24861 break;
24862 case WDI_WOWL_ENTER_REQ:
24863 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24864 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24865 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024866 case WDI_WOWL_EXIT_REQ:
24867 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24868 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24869 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024870 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24871 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24872 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24873 break;
24874 case WDI_FLUSH_AC_REQ:
24875 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24876 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24877 break;
24878 case WDI_BTAMP_EVENT_REQ:
24879 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24880 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24881 break;
24882 case WDI_KEEP_ALIVE_REQ:
24883 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24884 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24885 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024886#if defined FEATURE_WLAN_SCAN_PNO
24887 case WDI_SET_PREF_NETWORK_REQ:
24888 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24889 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24890 break;
24891 case WDI_SET_RSSI_FILTER_REQ:
24892 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24893 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24894 break;
24895 case WDI_UPDATE_SCAN_PARAMS_REQ:
24896 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24897 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24898 break;
24899#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024900 case WDI_SET_TX_PER_TRACKING_REQ:
24901 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24902 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024903 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024904#if defined WLAN_FEATURE_PACKET_FILTERING
24905 case WDI_8023_MULTICAST_LIST_REQ:
24906 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24907 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24908 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024909 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24910 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24911 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24912 break;
24913 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24914 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24915 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24916 break;
24917 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24918 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24919 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24920 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024921#endif
24922 case WDI_SET_POWER_PARAMS_REQ:
24923 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24924 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24925 break;
24926#if defined WLAN_FEATURE_GTK_OFFLOAD
24927 case WDI_GTK_OFFLOAD_REQ:
24928 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24929 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24930 break;
24931 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24932 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24933 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24934 break;
24935#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024936
Jeff Johnson295189b2012-06-20 16:38:30 -070024937 default:
24938 *ppfnReqCB = NULL;
24939 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024940 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024941 }
24942}/*WDI_ExtractRequestCBFromEvent*/
24943
24944
24945/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024946 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024947 frame xtl is enabled for a particular STA.
24948
24949 WDI_PostAssocReq must have been called.
24950
Jeff Johnsone7245742012-09-05 17:12:55 -070024951 @param uSTAIdx: STA index
24952
Jeff Johnson295189b2012-06-20 16:38:30 -070024953 @see WDI_PostAssocReq
24954 @return Result of the function call
24955*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024956wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024957WDI_IsHwFrameTxTranslationCapable
24958(
24959 wpt_uint8 uSTAIdx
24960)
24961{
Jeff Johnsone7245742012-09-05 17:12:55 -070024962 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024963 uma value*/
24964 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024965 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024966 ------------------------------------------------------------------------*/
24967 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24968 {
24969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24970 "WDI API call before module is initialized - Fail request");
24971
Jeff Johnsone7245742012-09-05 17:12:55 -070024972 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024973 }
24974
Gopichand Nakkala976e3252013-01-03 15:45:56 -080024975#ifdef WLAN_SOFTAP_VSTA_FEATURE
24976 if (IS_VSTA_IDX(uSTAIdx))
24977 {
24978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24979 "STA %d is a Virtual STA, "
24980 "HW frame translation disabled", uSTAIdx);
24981 return eWLAN_PAL_FALSE;
24982 }
24983#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024984
Jeff Johnson295189b2012-06-20 16:38:30 -070024985 return gWDICb.bFrameTransEnabled;
24986}/*WDI_IsHwFrameTxTranslationCapable*/
24987
Katya Nigam6201c3e2014-05-27 17:51:42 +053024988
24989/**
24990 @brief WDI_IsSelfSTA - check if staid is self sta index
24991
24992
24993 @param pWDICtx: pointer to the WLAN DAL context
24994 ucSTAIdx: station index
24995
24996 @return Result of the function call
24997*/
24998wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
24999{
25000 wpt_uint8 ucSTAType;
25001
25002 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25003 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25004 {
25005 if( ucSTAType == WDI_STA_ENTRY_SELF )
25006 return eWLAN_PAL_TRUE;
25007 }
25008
25009 return eWLAN_PAL_FALSE;
25010}
25011
25012
25013
Jeff Johnson295189b2012-06-20 16:38:30 -070025014#ifdef FEATURE_WLAN_SCAN_PNO
25015/**
25016 @brief WDI_SetPreferredNetworkList
25017
Jeff Johnsone7245742012-09-05 17:12:55 -070025018 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025019 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025020
Jeff Johnson295189b2012-06-20 16:38:30 -070025021 wdiPNOScanCb: callback for passing back the response
25022 of the Set PNO operation received from the
25023 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025024
Jeff Johnson295189b2012-06-20 16:38:30 -070025025 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025026 callback
25027
Jeff Johnson295189b2012-06-20 16:38:30 -070025028 @return Result of the function call
25029*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025030WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025031WDI_SetPreferredNetworkReq
25032(
25033 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25034 WDI_PNOScanCb wdiPNOScanCb,
25035 void* pUserData
25036)
25037{
25038 WDI_EventInfoType wdiEventData = {{0}};
25039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25040
25041 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025042 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025043 ------------------------------------------------------------------------*/
25044 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25045 {
25046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25047 "WDI API call before module is initialized - Fail request");
25048
Jeff Johnsone7245742012-09-05 17:12:55 -070025049 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025050 }
25051
25052 /*------------------------------------------------------------------------
25053 Fill in Event data and post to the Main FSM
25054 ------------------------------------------------------------------------*/
25055 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025056 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025057 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025058 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025059 wdiEventData.pUserData = pUserData;
25060
25061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25062}
25063
25064
25065/**
25066 @brief WDI_SetRssiFilterReq
25067
Jeff Johnsone7245742012-09-05 17:12:55 -070025068 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025069 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025070
Jeff Johnson295189b2012-06-20 16:38:30 -070025071 wdiRssiFilterCb: callback for passing back the response
25072 of the Set RSSI Filter operation received from the
25073 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025074
Jeff Johnson295189b2012-06-20 16:38:30 -070025075 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025076 callback
25077
Jeff Johnson295189b2012-06-20 16:38:30 -070025078 @return Result of the function call
25079*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025080WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025081WDI_SetRssiFilterReq
25082(
25083 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25084 WDI_RssiFilterCb wdiRssiFilterCb,
25085 void* pUserData
25086)
25087{
25088 WDI_EventInfoType wdiEventData = {{0}};
25089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25090
25091 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025092 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025093 ------------------------------------------------------------------------*/
25094 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25095 {
25096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25097 "WDI API call before module is initialized - Fail request");
25098
Jeff Johnsone7245742012-09-05 17:12:55 -070025099 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025100 }
25101
25102 /*------------------------------------------------------------------------
25103 Fill in Event data and post to the Main FSM
25104 ------------------------------------------------------------------------*/
25105 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025106 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025107 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025108 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025109 wdiEventData.pUserData = pUserData;
25110
25111 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25112}/*WDI_SetRssiFilterReq*/
25113
25114/**
25115 @brief WDI_UpdateScanParamsReq
25116
Jeff Johnsone7245742012-09-05 17:12:55 -070025117 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025118 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025119
Jeff Johnson295189b2012-06-20 16:38:30 -070025120 wdiUpdateScanParamsCb: callback for passing back the response
25121 of the Set PNO operation received from the
25122 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025123
Jeff Johnson295189b2012-06-20 16:38:30 -070025124 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025125 callback
25126
Jeff Johnson295189b2012-06-20 16:38:30 -070025127 @return Result of the function call
25128*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025129WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025130WDI_UpdateScanParamsReq
25131(
25132 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25133 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25134 void* pUserData
25135)
25136{
25137 WDI_EventInfoType wdiEventData = {{0}};
25138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25139
25140 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025141 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025142 ------------------------------------------------------------------------*/
25143 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25144 {
25145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25146 "WDI API call before module is initialized - Fail request");
25147
Jeff Johnsone7245742012-09-05 17:12:55 -070025148 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025149 }
25150
25151 /*------------------------------------------------------------------------
25152 Fill in Event data and post to the Main FSM
25153 ------------------------------------------------------------------------*/
25154 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025155 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025156 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025157 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025158 wdiEventData.pUserData = pUserData;
25159
25160 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25161}
25162
25163/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025164 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025165 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025166
25167 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025168 pwdiPNOScanReqParams: pointer to the info received
25169 from upper layers
25170 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025171 and its size
25172
Jeff Johnson295189b2012-06-20 16:38:30 -070025173 @return Result of the function call
25174*/
25175
25176WDI_Status
25177WDI_PackPreferredNetworkList
25178(
25179 WDI_ControlBlockType* pWDICtx,
25180 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25181 wpt_uint8** ppSendBuffer,
25182 wpt_uint16* pSize
25183)
25184{
Jeff Johnsone7245742012-09-05 17:12:55 -070025185 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025186 wpt_uint16 usDataOffset = 0;
25187 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025188 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025189 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025190 /*-----------------------------------------------------------------------
25191 Get message buffer
25192 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025193 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025194 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025195 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025196 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025197 {
25198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025199 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025200 pwdiPNOScanReqParams);
25201 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025202 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025203 }
25204
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025205 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25206
Jeff Johnson295189b2012-06-20 16:38:30 -070025207 /*-------------------------------------------------------------------------
25208 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25209 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025210 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025211 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025212 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025213 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25214
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025215 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025216 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025217 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025218 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025219 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25220
25221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025222 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025223 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25224 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25225 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25226
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025227 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025228 {
25229 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025230 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025231 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25232
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025233 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025234 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025235 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025236
25237 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025238 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025239 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025240
25241 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025242 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025243 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025244
Jeff Johnsone7245742012-09-05 17:12:55 -070025245 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025246 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025247 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025248 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25249 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25250 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25251 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025252
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025253 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025254 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025255 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025256
25257 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025258 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025259 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25260
25261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025262 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025263 pPrefNetwListParams->aNetworks[i].ssId.length,
25264 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025265 }
25266
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025267 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025268 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025269 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25270 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25271 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25272
25273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025274 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025275 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025276 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25277 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25278
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025279 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025280 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025281 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025282 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025283 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025284 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25285 }
25286
25287 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025288 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025289 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25290 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25291 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025292 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025293
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025294 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025295 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025296 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025297
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025298 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025299 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25300 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25301 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025302 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025303
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025304 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025305 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025306 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025307
25308 /*Set the output values*/
25309 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025310 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025311
25312 return WDI_STATUS_SUCCESS;
25313}/*WDI_PackPreferredNetworkList*/
25314
25315/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025316 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025317 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025318
25319 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025320 pwdiPNOScanReqParams: pointer to the info received
25321 from upper layers
25322 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025323 and its size
25324
Jeff Johnson295189b2012-06-20 16:38:30 -070025325 @return Result of the function call
25326*/
25327
25328WDI_Status
25329WDI_PackPreferredNetworkListNew
25330(
25331 WDI_ControlBlockType* pWDICtx,
25332 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25333 wpt_uint8** ppSendBuffer,
25334 wpt_uint16* pSize
25335)
25336{
Jeff Johnsone7245742012-09-05 17:12:55 -070025337 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025338 wpt_uint16 usDataOffset = 0;
25339 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025340 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025341 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025342
25343 /*-----------------------------------------------------------------------
25344 Get message buffer
25345 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025346 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025347 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025348 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025349 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025350 {
25351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025352 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025353 pwdiPNOScanReqParams);
25354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025356 }
25357
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025358 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25359
Jeff Johnson295189b2012-06-20 16:38:30 -070025360 /*-------------------------------------------------------------------------
25361 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25362 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025363 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025364 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025365 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025366 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25367
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025368 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025369 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025370 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025371 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025372 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25373
25374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025375 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025376 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25377 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25378 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25379
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025380 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025381 {
25382 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025383 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025384 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25385
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025386 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025387 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025388 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025389
25390 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025391 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025392 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025393
25394 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025395 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025396 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025397
25398 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025399 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025400 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025401
Jeff Johnsone7245742012-09-05 17:12:55 -070025402 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025403 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025404 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025405 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25406
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025407 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025408 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025409 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025410
25411 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025412 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025413 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25414
25415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025416 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025417 pPrefNetwListParams->aNetworks[i].ssId.length,
25418 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025419 }
25420
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025421 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025422 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025423 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25424 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25425 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25426
25427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025428 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025429 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025430 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25431 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25432
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025433 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025434 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025435 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025436 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025437 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025438 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25439 }
25440
25441 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025442 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025443 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25444 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25445 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025446 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025447
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025448 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025449 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025450 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025451
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025452 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025453 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25454 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25455 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025456 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025457
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025458 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025459 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025460 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025461
Jeff Johnson295189b2012-06-20 16:38:30 -070025462
25463 /*Set the output values*/
25464 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025465 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025466
25467 return WDI_STATUS_SUCCESS;
25468}/*WDI_PackPreferredNetworkListNew*/
25469
25470/**
25471 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025472
25473 @param pWDICtx: pointer to the WLAN DAL context
25474 pEventData: pointer to the event information structure
25475
Jeff Johnson295189b2012-06-20 16:38:30 -070025476 @return Result of the function call
25477*/
25478WDI_Status
25479WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025480(
Jeff Johnson295189b2012-06-20 16:38:30 -070025481 WDI_ControlBlockType* pWDICtx,
25482 WDI_EventInfoType* pEventData
25483)
25484{
25485 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
25486 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025487 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025488 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025489 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025490
25491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025492 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025493 -------------------------------------------------------------------------*/
25494 if (( NULL == pEventData ) ||
25495 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
25496 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
25497 {
25498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025499 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025502 }
25503
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053025504 /*----------------------------------------------------------------------
25505 Avoid Enable PNO during any active session or an ongoing session
25506 ----------------------------------------------------------------------*/
25507 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
25508 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
25509 {
25510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25511 "%s:(Active/Ongoing Session) - Fail request", __func__);
25512
25513 return WDI_STATUS_E_FAILURE;
25514 }
25515
Jeff Johnson295189b2012-06-20 16:38:30 -070025516 /*-------------------------------------------------------------------------
25517 Pack the PNO request structure based on version
25518 -------------------------------------------------------------------------*/
25519 if ( pWDICtx->wdiPNOVersion > 0 )
25520 {
25521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025522 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025523 pWDICtx->wdiPNOVersion);
25524
25525 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
25526 &pSendBuffer, &usSendSize);
25527 }
25528 else
25529 {
25530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025531 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025532 pWDICtx->wdiPNOVersion);
25533
25534 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
25535 &pSendBuffer, &usSendSize);
25536 }
25537
25538 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25539 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25540 {
25541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025542 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025544 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025545 }
25546
25547 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025548 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025549
25550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025551 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025552 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025553 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25554 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025555}
25556
25557/**
25558 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025559
25560 @param pWDICtx: pointer to the WLAN DAL context
25561 pEventData: pointer to the event information structure
25562
Jeff Johnson295189b2012-06-20 16:38:30 -070025563 @see
25564 @return Result of the function call
25565*/
25566WDI_Status
25567WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025568(
Jeff Johnson295189b2012-06-20 16:38:30 -070025569 WDI_ControlBlockType* pWDICtx,
25570 WDI_EventInfoType* pEventData
25571)
25572{
25573 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
25574 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025575 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025576 wpt_uint16 usDataOffset = 0;
25577 wpt_uint16 usSendSize = 0;
25578 wpt_uint8 ucRssiThreshold;
25579
25580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025581 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025582 -------------------------------------------------------------------------*/
25583 if (( NULL == pEventData ) ||
25584 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
25585 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
25586 {
25587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025591 }
25592
25593 /*-----------------------------------------------------------------------
25594 Get message buffer
25595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025597 sizeof(ucRssiThreshold),
25598 &pSendBuffer, &usDataOffset, &usSendSize))||
25599 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
25600 {
25601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025602 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025603 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
25604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025606 }
25607
25608 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
25609
Jeff Johnsone7245742012-09-05 17:12:55 -070025610 wpalMemoryCopy( pSendBuffer+usDataOffset,
25611 &ucRssiThreshold,
25612 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070025613
25614 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025615 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025616
25617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025618 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025619 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025620 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25621 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025622}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025623#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25624/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025625 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070025626
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025627 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025628 by the Device Interface
25629
25630 wdiRoamOffloadScancb: callback for passing back the response
25631 of the Roam Candidate Lookup Req operation received from the
25632 device
25633
25634 pUserData: user data will be passed back with the
25635 callback
25636 @return Result of the function call
25637*/
25638WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025639WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025640(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025641 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025642 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
25643 void* pUserData
25644)
25645{
25646 WDI_EventInfoType wdiEventData = {{0}};
25647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25648
25649 /*------------------------------------------------------------------------
25650 Sanity Check
25651 ------------------------------------------------------------------------*/
25652 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25653 {
25654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25655 "WDI API call before module is initialized - Fail request");
25656
25657 return WDI_STATUS_E_NOT_ALLOWED;
25658 }
25659
25660 /*------------------------------------------------------------------------
25661 Fill in Event data and post to the Main FSM
25662 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025663 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
25664 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
25665 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025666 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
25667 wdiEventData.pUserData = pUserData;
25668
25669 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25670}
25671
25672void
25673WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
25674{
25675 switch (wdiEdType)
25676 {
25677 case WDI_ED_NONE:
25678 *EdType = eED_NONE;
25679 break;
25680 case WDI_ED_WEP40:
25681 case WDI_ED_WEP104:
25682 *EdType = eED_WEP;
25683 break;
25684 case WDI_ED_TKIP:
25685 *EdType = eED_TKIP;
25686 break;
25687 case WDI_ED_CCMP:
25688#ifdef WLAN_FEATURE_11W
25689 case WDI_ED_AES_128_CMAC:
25690#endif
25691 *EdType = eED_CCMP;
25692 break;
25693#ifdef FEATURE_WLAN_WAPI
25694 case WDI_ED_WPI:
25695 *EdType = eED_WPI;
25696 break;
25697#endif
25698 case WDI_ED_ANY:
25699 *EdType = eED_ANY;
25700 break;
25701
25702 default:
25703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25704 "%s: Unknown Encryption Type", __func__);
25705 break;
25706 }
25707}
25708
25709/**
25710 @brief Helper function to pack Start Roam Candidate Lookup
25711 Request parameters
25712
25713 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025714 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025715 from upper layers
25716 ppSendBuffer, pSize - out pointers of the packed buffer
25717 and its size
25718
25719 @return Result of the function call
25720*/
25721
25722WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025723WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025724(
25725 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025726 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025727 wpt_uint8** ppSendBuffer,
25728 wpt_uint16* pSize
25729)
25730{
25731 wpt_uint8* pSendBuffer = NULL;
25732 wpt_uint16 usDataOffset = 0;
25733 wpt_uint16 usSendSize = 0;
25734 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
25735 wpt_uint8 i;
25736 /*-----------------------------------------------------------------------
25737 Get message buffer
25738 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025740 sizeof(tRoamCandidateListParams),
25741 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025742 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025743 {
25744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025745 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025746 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025747 WDI_ASSERT(0);
25748 return WDI_STATUS_E_FAILURE;
25749 }
25750 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025751 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025752 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025753 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025754 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025755 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025756 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025757 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025758 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025759 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025760 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025761
25762 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025763 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025764 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025765 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025766 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
25767 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025768 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
25769 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
25770 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
25771 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
25772 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080025773 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025774 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080025775 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025776 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
25777 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
25778 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
25779 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
25780 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
25781 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
25782 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025783 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025784 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025785 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
25786 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
25787 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025788
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
25790 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
25791 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
25792 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
25793 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
25794 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080025795 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025796 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
25797 pRoamCandidateListParams->RoamScanOffloadEnabled,
25798 pRoamCandidateListParams->Command,
25799 pRoamCandidateListParams->StartScanReason,
25800 pRoamCandidateListParams->NeighborScanTimerPeriod,
25801 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
25802 pRoamCandidateListParams->NeighborScanChannelMinTime,
25803 pRoamCandidateListParams->NeighborScanChannelMaxTime,
25804 pRoamCandidateListParams->EmptyRefreshScanPeriod,
25805 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
25806 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
25807 pRoamCandidateListParams->ConnectedNetwork.authentication,
25808 pRoamCandidateListParams->ConnectedNetwork.encryption,
25809 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
25810 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
25811 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025812 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025813 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025814 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025815 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025816 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25817 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025818 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025819 pRoamCandidateListParams->us24GProbeSize);
25820 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025821 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025822 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025823 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025824 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25825 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025826 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025827 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025828 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
25829 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
25830 pRoamCandidateListParams->nProbes =
25831 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25832 pRoamCandidateListParams->HomeAwayTime =
25833 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025835 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25836 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025838 }
25839
25840
25841 /*Set the output values*/
25842 *ppSendBuffer = pSendBuffer;
25843 *pSize = usSendSize;
25844 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025845}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025846
25847/**
25848 @brief Process Start Roam Candidate Lookup Request function
25849
25850 @param pWDICtx: pointer to the WLAN DAL context
25851 pEventData: pointer to the event information structure
25852
25853 @return Result of the function call
25854*/
25855WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025856WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025857(
25858 WDI_ControlBlockType* pWDICtx,
25859 WDI_EventInfoType* pEventData
25860)
25861{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025862 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025863 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25864 wpt_uint8* pSendBuffer = NULL;
25865 wpt_uint16 usSendSize = 0;
25866 WDI_Status wdiStatus;
25867 /*-------------------------------------------------------------------------
25868 Sanity check
25869 -------------------------------------------------------------------------*/
25870 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025871 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025872 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25873 {
25874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25875 "%s: Invalid parameters", __func__);
25876 WDI_ASSERT(0);
25877 return WDI_STATUS_E_FAILURE;
25878 }
25879
25880 /*-------------------------------------------------------------------------
25881 Pack the Start Roam Candidate Lookup request structure based on version
25882 -------------------------------------------------------------------------*/
25883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25884 "%s: Packing Roam Candidate Lookup request ", __func__);
25885
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025886 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025887 &pSendBuffer, &usSendSize);
25888
25889 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25890 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25891 {
25892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25893 "%s: failed to pack request parameters", __func__);
25894 WDI_ASSERT(0);
25895 return wdiStatus;
25896 }
25897
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025898 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25899 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025900
25901 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025902 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025903 -------------------------------------------------------------------------*/
25904 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025905 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025906}
25907
25908/**
25909 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25910 response is being received over the bus from HAL)
25911
25912 @param pWDICtx: pointer to the WLAN DAL context
25913 pEventData: pointer to the event information structure
25914
25915 @see
25916 @return Result of the function call
25917*/
25918WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025919WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025920(
25921 WDI_ControlBlockType* pWDICtx,
25922 WDI_EventInfoType* pEventData
25923)
25924{
25925 WDI_Status wdiStatus;
25926 eHalStatus halStatus;
25927 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25928
25929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25930
25931 /*-------------------------------------------------------------------------
25932 Sanity check
25933 -------------------------------------------------------------------------*/
25934 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25935 ( NULL == pEventData->pEventData ))
25936 {
25937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25938 "%s: Invalid parameters", __func__);
25939 WDI_ASSERT(0);
25940 return WDI_STATUS_E_FAILURE;
25941 }
25942
25943 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25944
25945 /*-------------------------------------------------------------------------
25946 Extract response and send it to UMAC
25947 -------------------------------------------------------------------------*/
25948 halStatus = *((eHalStatus*)pEventData->pEventData);
25949 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25950
25951 /*Notify UMAC*/
25952 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25953
25954 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025955}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025956#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025957
25958/**
25959 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025960
25961 @param pWDICtx: pointer to the WLAN DAL context
25962 pEventData: pointer to the event information structure
25963
Jeff Johnson295189b2012-06-20 16:38:30 -070025964 @see
25965 @return Result of the function call
25966*/
25967WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025968WDI_PackUpdateScanParamsReq
25969(
25970 WDI_ControlBlockType* pWDICtx,
25971 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25972 wpt_uint8** ppSendBuffer,
25973 wpt_uint16* pSize
25974)
25975{
25976 wpt_uint8* pSendBuffer = NULL;
25977 wpt_uint16 usDataOffset = 0;
25978 wpt_uint16 usSendSize = 0;
25979 tUpdateScanParams updateScanParams = {0};
25980
25981
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025983 "Begin WDI Update Scan Parameters Old Style Params");
25984 /*-----------------------------------------------------------------------
25985 Get message buffer
25986 -----------------------------------------------------------------------*/
25987 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25988 sizeof(updateScanParams),
25989 &pSendBuffer, &usDataOffset, &usSendSize))||
25990 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25991 {
25992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025993 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025994 pwdiUpdateScanParams);
25995 WDI_ASSERT(0);
25996 return WDI_STATUS_E_FAILURE;
25997 }
25998
25999 //
26000 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26001 //
26002
26003 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26004 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26005
26006 updateScanParams.ucChannelCount =
26007 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26008 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26009 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26010 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26011
26012 wpalMemoryCopy( updateScanParams.aChannels,
26013 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26014 updateScanParams.ucChannelCount);
26015
26016
26017 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26018 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26019 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26020 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26021 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26022
26023 wpalMemoryCopy( pSendBuffer+usDataOffset,
26024 &updateScanParams,
26025 sizeof(updateScanParams));
26026
26027 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26028 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26029
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026031 "End Update Scan Parameters Old Style");
26032
26033 /*Set the output values*/
26034 *ppSendBuffer = pSendBuffer;
26035 *pSize = usSendSize;
26036
26037 return WDI_STATUS_SUCCESS;
26038}
26039
26040/**
26041 @brief Process Update Scan Params function
26042
26043 @param pWDICtx: pointer to the WLAN DAL context
26044 pEventData: pointer to the event information structure
26045
26046 @see
26047 @return Result of the function call
26048*/
26049WDI_Status
26050WDI_PackUpdateScanParamsReqEx
26051(
26052 WDI_ControlBlockType* pWDICtx,
26053 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26054 wpt_uint8** ppSendBuffer,
26055 wpt_uint16* pSize
26056)
26057{
26058 wpt_uint8* pSendBuffer = NULL;
26059 wpt_uint16 usDataOffset = 0;
26060 wpt_uint16 usSendSize = 0;
26061 tUpdateScanParamsEx updateScanParams = {0};
26062
26063
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026064 /*-----------------------------------------------------------------------
26065 Get message buffer
26066 -----------------------------------------------------------------------*/
26067 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26068 sizeof(updateScanParams),
26069 &pSendBuffer, &usDataOffset, &usSendSize))||
26070 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26071 {
26072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026073 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026074 pwdiUpdateScanParams);
26075 WDI_ASSERT(0);
26076 return WDI_STATUS_E_FAILURE;
26077 }
26078
26079 //
26080 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26081 //
26082
26083 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26084 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26085
26086 updateScanParams.ucChannelCount =
26087 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26088 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26089 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26090 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26091
26092 wpalMemoryCopy( updateScanParams.aChannels,
26093 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26094 updateScanParams.ucChannelCount);
26095
26096
26097 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26098 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26099 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26100 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26101 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26102
26103 wpalMemoryCopy( pSendBuffer+usDataOffset,
26104 &updateScanParams,
26105 sizeof(updateScanParams));
26106
26107 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26108 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26109
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026110 /*Set the output values*/
26111 *ppSendBuffer = pSendBuffer;
26112 *pSize = usSendSize;
26113
26114 return WDI_STATUS_SUCCESS;
26115}
26116
26117/**
26118 @brief Process Update Scan Params function
26119
26120 @param pWDICtx: pointer to the WLAN DAL context
26121 pEventData: pointer to the event information structure
26122
26123 @see
26124 @return Result of the function call
26125*/
26126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026127WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026128(
Jeff Johnson295189b2012-06-20 16:38:30 -070026129 WDI_ControlBlockType* pWDICtx,
26130 WDI_EventInfoType* pEventData
26131)
26132{
26133 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26134 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026135 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026136 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026137 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026138
26139 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026140 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026141 -------------------------------------------------------------------------*/
26142 if (( NULL == pEventData ) ||
26143 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26144 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26145 {
26146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026147 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026150 }
26151
26152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26153 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026154
26155 //
26156 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26157 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026158 if ( pWDICtx->wlanVersion.revision < 1 )
26159 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026160 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026161 &pSendBuffer, &usSendSize);
26162 }
26163 else
26164 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026165 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26166 &pSendBuffer, &usSendSize);
26167 }
26168
26169 if(WDI_STATUS_SUCCESS != wdiStatus)
26170 {
26171 //memory allocation failed
26172 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026173 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026174
Jeff Johnson295189b2012-06-20 16:38:30 -070026175 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026176 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026177 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026178 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026179 wdiUpdateScanParamsCb, pEventData->pUserData,
26180 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026181}
26182
26183/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026184 @brief Process Update Channel Params function
26185
26186 @param pWDICtx: pointer to the WLAN DAL context
26187 pEventData: pointer to the event information structure
26188
26189 @see
26190 @return Result of the function call
26191*/
26192WDI_Status
26193WDI_ProcessUpdateChannelParamsReq
26194(
26195 WDI_ControlBlockType* pWDICtx,
26196 WDI_EventInfoType* pEventData
26197)
26198{
26199 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26200 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26201 wpt_uint8* pSendBuffer = NULL;
26202 wpt_uint16 usDataOffset = 0;
26203 wpt_uint16 usSendSize = 0;
26204 tUpdateChannelReqType *updateChannelParams;
26205 wpt_uint32 usUpdateChanParamSize;
26206 wpt_uint8 num_channels = 0;
26207
26208 /*-------------------------------------------------------------------------
26209 Sanity check
26210 -------------------------------------------------------------------------*/
26211 if (( NULL == pEventData ) ||
26212 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26213 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26214 {
26215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26216 "%s: Invalid parameters", __func__);
26217 WDI_ASSERT(0);
26218 return WDI_STATUS_E_FAILURE;
26219 }
26220 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
26221 usUpdateChanParamSize = (sizeof(tUpdateChannelReqType) -
26222 ((WLAN_HAL_ROAM_SCAN_MAX_CHANNELS - num_channels) *
26223 sizeof(tUpdateChannelParam)));
26224
26225 /*-----------------------------------------------------------------------
26226 Get message buffer
26227 -----------------------------------------------------------------------*/
26228 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26229 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26230 &pSendBuffer, &usDataOffset, &usSendSize))||
26231 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26232 {
26233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26234 "Unable to get send buffer in Update Channel Params req %p",
26235 pwdiUpdateChanListParams);
26236 WDI_ASSERT(0);
26237 return WDI_STATUS_E_FAILURE;
26238 }
26239 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26240
26241 updateChannelParams->numChan = num_channels;
26242 wpalMemoryCopy(&updateChannelParams->chanParam,
26243 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26244 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26245
26246 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26247 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26248
26249 /*-------------------------------------------------------------------------
26250 Send Update channel request to fw
26251 -------------------------------------------------------------------------*/
26252 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26253 wdiUpdateChanParamsCb, pEventData->pUserData,
26254 WDI_UPDATE_CHAN_RESP);
26255}
26256
26257/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026258 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026259
26260 @param pWDICtx: pointer to the WLAN DAL context
26261 pEventData: pointer to the event information structure
26262
Jeff Johnson295189b2012-06-20 16:38:30 -070026263 @see
26264 @return Result of the function call
26265*/
26266WDI_Status
26267WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026268(
Jeff Johnson295189b2012-06-20 16:38:30 -070026269 WDI_ControlBlockType* pWDICtx,
26270 WDI_EventInfoType* pEventData
26271)
26272{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026273 WDI_LowLevelIndType wdiInd;
26274 tpPrefNetwFoundParams pNetwFoundParams;
26275 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026276
26277
26278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026280 -------------------------------------------------------------------------*/
26281 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26282 ( NULL == pEventData->pEventData ))
26283 {
26284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026286 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026288 }
26289
26290 /*-------------------------------------------------------------------------
26291 Extract indication and send it to UMAC
26292 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026293 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26294
26295 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26296 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26297 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26298
26299 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26300 {
26301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26302 "%s: fail to allocate memory", __func__);
26303 return WDI_STATUS_MEM_FAILURE;
26304 }
26305
26306 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26307 (pNetwFoundParams->ssId.length < 32 )?
26308 pNetwFoundParams->ssId.length : 32;
26309 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26310 pNetwFoundParams->ssId.ssId,
26311 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26312 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26313 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26314 pNetwFoundParams->frameLength;
26315 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26316 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26317 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026318
26319 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026320 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026321
Jeff Johnson295189b2012-06-20 16:38:30 -070026322 // DEBUG
26323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang56002a22013-08-28 17:55:56 -070026324 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026325 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026326 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026327 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026328 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026329 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26330
ltimariub77f24b2013-01-24 18:54:33 -080026331 if ( pWDICtx->wdiLowLevelIndCB )
26332 {
26333 /*Notify UMAC*/
26334 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26335 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026336
26337 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026338}
26339
26340/**
26341 @brief Process PNO Rsp function (called when a
26342 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026343
26344 @param pWDICtx: pointer to the WLAN DAL context
26345 pEventData: pointer to the event information structure
26346
Jeff Johnson295189b2012-06-20 16:38:30 -070026347 @see
26348 @return Result of the function call
26349*/
26350WDI_Status
26351WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026352(
Jeff Johnson295189b2012-06-20 16:38:30 -070026353 WDI_ControlBlockType* pWDICtx,
26354 WDI_EventInfoType* pEventData
26355)
26356{
26357 WDI_Status wdiStatus;
26358 eHalStatus halStatus;
26359 WDI_PNOScanCb wdiPNOScanCb = NULL;
26360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26361
26362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026364 -------------------------------------------------------------------------*/
26365 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26366 ( NULL == pEventData->pEventData ))
26367 {
26368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026369 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026370 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026372 }
26373
26374
Jeff Johnsone7245742012-09-05 17:12:55 -070026375 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026376
26377 /*-------------------------------------------------------------------------
26378 Extract response and send it to UMAC
26379 -------------------------------------------------------------------------*/
26380 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026381 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026382
26383 /*Notify UMAC*/
26384 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26385
Jeff Johnsone7245742012-09-05 17:12:55 -070026386 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026387}/*WDI_ProcessSetPreferredNetworkRsp*/
26388
26389/**
26390 @brief Process RSSI Filter Rsp function (called when a
26391 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026392
26393 @param pWDICtx: pointer to the WLAN DAL context
26394 pEventData: pointer to the event information structure
26395
Jeff Johnson295189b2012-06-20 16:38:30 -070026396 @see
26397 @return Result of the function call
26398*/
26399WDI_Status
26400WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026401(
Jeff Johnson295189b2012-06-20 16:38:30 -070026402 WDI_ControlBlockType* pWDICtx,
26403 WDI_EventInfoType* pEventData
26404)
26405{
26406 WDI_Status wdiStatus;
26407 eHalStatus halStatus;
26408 WDI_RssiFilterCb wdiRssiFilterCb;
26409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26410
26411 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026412 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026413 -------------------------------------------------------------------------*/
26414 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26415 ( NULL == pEventData->pEventData ))
26416 {
26417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026418 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026421 }
26422
Jeff Johnsone7245742012-09-05 17:12:55 -070026423 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026424
26425 /*-------------------------------------------------------------------------
26426 Extract response and send it to UMAC
26427 -------------------------------------------------------------------------*/
26428 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026429 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026430
26431 /*Notify UMAC*/
26432 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26433
Jeff Johnsone7245742012-09-05 17:12:55 -070026434 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026435}/*WDI_ProcessSetRssiFilterRsp*/
26436
26437/**
26438 @brief Process Update Scan Params Rsp function (called when a
26439 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026440
26441 @param pWDICtx: pointer to the WLAN DAL context
26442 pEventData: pointer to the event information structure
26443
Jeff Johnson295189b2012-06-20 16:38:30 -070026444 @see
26445 @return Result of the function call
26446*/
26447WDI_Status
26448WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026449(
Jeff Johnson295189b2012-06-20 16:38:30 -070026450 WDI_ControlBlockType* pWDICtx,
26451 WDI_EventInfoType* pEventData
26452)
26453{
26454 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026455 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026456 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026457 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26459
26460 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026461 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026462 -------------------------------------------------------------------------*/
26463 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26464 ( NULL == pEventData->pEventData ))
26465 {
26466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026467 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026469 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026470 }
26471
26472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026473 "%s: Process UPD scan params ptr : %p",
26474 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026475
Jeff Johnsone7245742012-09-05 17:12:55 -070026476 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026477
26478 /*-------------------------------------------------------------------------
26479 Extract response and send it to UMAC
26480 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026481 wpalMemoryCopy( (void *)&halUpdScanParams.status,
26482 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026483 sizeof(halUpdScanParams.status));
26484
26485 uStatus = halUpdScanParams.status;
26486
26487 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070026488 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070026489
26490 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026491 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070026492
Jeff Johnsone7245742012-09-05 17:12:55 -070026493 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026494
26495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026496 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026497 halUpdScanParams.status);
26498
26499 /*Notify UMAC*/
26500 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26501
Jeff Johnsone7245742012-09-05 17:12:55 -070026502 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026503}
26504#endif // FEATURE_WLAN_SCAN_PNO
26505
26506#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070026507WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026508WDI_8023MulticastListReq
26509(
26510 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
26511 WDI_8023MulticastListCb wdi8023MulticastListCallback,
26512 void* pUserData
26513)
26514{
26515 WDI_EventInfoType wdiEventData;
26516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26517
26518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026519 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026520
26521 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026522 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026523 ------------------------------------------------------------------------*/
26524 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26525 {
26526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26527 "WDI API call before module is initialized - Fail request");
26528
Jeff Johnsone7245742012-09-05 17:12:55 -070026529 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026530 }
26531
26532 /*------------------------------------------------------------------------
26533 Fill in Event data and post to the Main FSM
26534 ------------------------------------------------------------------------*/
26535 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026536 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026537 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026538 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026539 wdiEventData.pUserData = pUserData;
26540
26541 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26542}
26543
Jeff Johnsone7245742012-09-05 17:12:55 -070026544WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026545WDI_ReceiveFilterSetFilterReq
26546(
26547 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
26548 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
26549 void* pUserData
26550)
26551{
26552 WDI_EventInfoType wdiEventData;
26553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26554
26555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026556 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026557
26558 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026559 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026560 ------------------------------------------------------------------------*/
26561 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26562 {
26563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26564 "WDI API call before module is initialized - Fail request");
26565
Jeff Johnsone7245742012-09-05 17:12:55 -070026566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026567 }
26568
26569 /*------------------------------------------------------------------------
26570 Fill in Event data and post to the Main FSM
26571 ------------------------------------------------------------------------*/
26572 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026573 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
26574 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070026575 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26576 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026577 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026578 wdiEventData.pUserData = pUserData;
26579
26580
26581 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26582}
26583
Jeff Johnsone7245742012-09-05 17:12:55 -070026584WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026585WDI_FilterMatchCountReq
26586(
26587 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
26588 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
26589 void* pUserData
26590)
26591{
26592 WDI_EventInfoType wdiEventData;
26593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26594
26595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026596 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026597
26598 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026599 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026600 ------------------------------------------------------------------------*/
26601 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26602 {
26603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26604 "WDI API call before module is initialized - Fail request");
26605
Jeff Johnsone7245742012-09-05 17:12:55 -070026606 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026607 }
26608
26609 /*------------------------------------------------------------------------
26610 Fill in Event data and post to the Main FSM
26611 ------------------------------------------------------------------------*/
26612 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026613 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026614 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026615 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026616 wdiEventData.pUserData = pUserData;
26617
26618
26619 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26620}
26621
Jeff Johnsone7245742012-09-05 17:12:55 -070026622WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026623WDI_ReceiveFilterClearFilterReq
26624(
26625 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
26626 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
26627 void* pUserData
26628)
26629{
26630 WDI_EventInfoType wdiEventData;
26631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26632
26633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026634 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026635
26636 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026637 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026638 ------------------------------------------------------------------------*/
26639 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26640 {
26641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26642 "WDI API call before module is initialized - Fail request");
26643
Jeff Johnsone7245742012-09-05 17:12:55 -070026644 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026645 }
26646
26647 /*------------------------------------------------------------------------
26648 Fill in Event data and post to the Main FSM
26649 ------------------------------------------------------------------------*/
26650 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026651 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026652 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026653 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026654 wdiEventData.pUserData = pUserData;
26655
26656
26657 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26658}
26659
26660/**
26661 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026662
26663 @param pWDICtx: pointer to the WLAN DAL context
26664 pEventData: pointer to the event information structure
26665
Jeff Johnson295189b2012-06-20 16:38:30 -070026666 @see
26667 @return Result of the function call
26668*/
26669WDI_Status
26670WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026671(
Jeff Johnson295189b2012-06-20 16:38:30 -070026672 WDI_ControlBlockType* pWDICtx,
26673 WDI_EventInfoType* pEventData
26674)
26675{
26676 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
26677 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026678 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026679 wpt_uint16 usDataOffset = 0;
26680 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026681 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026682 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026683 wpt_uint8 ucCurrentBSSSesIdx = 0;
26684 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026685
26686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026687 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026688
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026689 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
26690 if( NULL == pRcvFltMcAddrListType )
26691 {
26692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26693 "Failed to alloc in WDI_Process8023MulticastListReq");
26694 return WDI_STATUS_E_FAILURE;
26695 }
26696
Jeff Johnson295189b2012-06-20 16:38:30 -070026697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026698 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026699 -------------------------------------------------------------------------*/
26700 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026701 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026702 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026703 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026704 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
26705 {
26706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026707 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026708 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026710 return WDI_STATUS_E_FAILURE;
26711 }
26712
26713 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26714 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
26715 &pBSSSes);
26716 if ( NULL == pBSSSes )
26717 {
26718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026719 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026720 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026722 }
26723
26724 /*-----------------------------------------------------------------------
26725 Get message buffer
26726 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026727 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26728 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026729 sizeof(tHalRcvFltMcAddrListType),
26730 &pSendBuffer, &usDataOffset, &usSendSize))||
26731 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
26732 {
26733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26734 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026735 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026736 pEventData, pwdiFltPktSetMcListReqParamsType,
26737 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070026738 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026739 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026740 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026741 }
26742
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026743 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070026744 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026745 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026746 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026747 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070026748 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
26749 sizeof(tSirMacAddr));
26750 }
26751
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026752 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026753 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026754 pRcvFltMcAddrListType,
26755 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070026756
26757 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026758 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026759
26760
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026761 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026763 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026764 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026765 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026766 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026767 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026768}
26769
26770/**
26771 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026772
26773 @param pWDICtx: pointer to the WLAN DAL context
26774 pEventData: pointer to the event information structure
26775
Jeff Johnson295189b2012-06-20 16:38:30 -070026776 @see
26777 @return Result of the function call
26778*/
26779WDI_Status
26780WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026781(
Jeff Johnson295189b2012-06-20 16:38:30 -070026782 WDI_ControlBlockType* pWDICtx,
26783 WDI_EventInfoType* pEventData
26784)
26785{
26786 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
26787 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026788 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026789 wpt_uint16 usDataOffset = 0;
26790 wpt_uint16 usSendSize = 0;
26791 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026792 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026793 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026794 wpt_uint8 ucCurrentBSSSesIdx = 0;
26795 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026796 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
26797 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026798
26799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026800 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026801
26802 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026803 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026804 -------------------------------------------------------------------------*/
26805 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026806 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070026807 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026808 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026809 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
26810 {
26811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026812 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026814 return WDI_STATUS_E_FAILURE;
26815 }
26816
26817 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26818 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
26819 &pBSSSes);
26820 if ( NULL == pBSSSes )
26821 {
26822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026823 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026824 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026825 }
26826
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026827 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
26828 {
Jeff Johnson295189b2012-06-20 16:38:30 -070026829
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026830 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
26831 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26832 * sizeof(tHalSessionizedRcvPktFilterCfgType));
26833
26834 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
26835 usSessRcvPktFilterCfgSize);
26836
26837 if(NULL == pSessRcvPktFilterCfg)
26838 {
26839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26840 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026841 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026842 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026843 WDI_ASSERT(0);
26844 return WDI_STATUS_E_FAILURE;
26845 }
26846
26847 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
26848
26849 /*-----------------------------------------------------------------------
26850 Get message buffer
26851 -----------------------------------------------------------------------*/
26852
26853 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
26854 usSessRcvPktFilterCfgSize,
26855 &pSendBuffer, &usDataOffset, &usSendSize))||
26856 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
26857 {
26858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26859 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026860 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026861 pEventData, pwdiSetRcvPktFilterReqInfo,
26862 wdiReceiveFilterSetFilterCb);
26863 WDI_ASSERT(0);
26864 wpalMemoryFree(pSessRcvPktFilterCfg);
26865 return WDI_STATUS_E_FAILURE;
26866 }
26867
26868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026869 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026870 usSendSize,pSessRcvPktFilterCfg);
26871
26872 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26873 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26874 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26875 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
26876
26877 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
26878
26879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26880 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
26881 pSessRcvPktFilterCfg->filterType);
26882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26883 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
26884 pSessRcvPktFilterCfg->coleasceTime);
26885
26886 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
26887 {
26888 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
26889 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26890 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
26891 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26892 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
26893 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26894 pSessRcvPktFilterCfg->paramsData[i].dataLength =
26895 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
26896
26897 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
26898 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26899 8);
26900 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
26901 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26902 8);
26903
26904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026905 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026906 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26907 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26908
26909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026910 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026911 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26912 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26913
26914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026915 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026916 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26917 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26918 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26919 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26920 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26921 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26922
26923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026924 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026925 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26926 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26927 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26928 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26929 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26930 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26931 }
26932
26933 wpalMemoryCopy( pSendBuffer+usDataOffset,
26934 pSessRcvPktFilterCfg,
26935 usSessRcvPktFilterCfgSize);
26936
26937
26938 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26939 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26940
26941 wpalMemoryFree(pSessRcvPktFilterCfg);
26942
26943 }
26944 /*If SLM_SESSIONIZATION is not supported then do this */
26945 else
26946 {
26947 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26948 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26949 * sizeof(tHalRcvPktFilterParams));
26950
26951 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026952 usRcvPktFilterCfgSize);
26953
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026954 if(NULL == pRcvPktFilterCfg)
26955 {
26956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26957 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026958 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026959 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026960 WDI_ASSERT(0);
26961 return WDI_STATUS_E_FAILURE;
26962 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026963
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026964 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026965
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026966 /*-----------------------------------------------------------------------
26967 Get message buffer
26968 -----------------------------------------------------------------------*/
26969 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026970 usRcvPktFilterCfgSize,
26971 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026972 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26973 {
26974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026975 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026976 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026977 pEventData, pwdiSetRcvPktFilterReqInfo,
26978 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026979 WDI_ASSERT(0);
26980 wpalMemoryFree(pRcvPktFilterCfg);
26981 return WDI_STATUS_E_FAILURE;
26982 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026983
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026985 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026986 usSendSize,usRcvPktFilterCfgSize);
26987
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026988 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26989 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26990 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26991 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026992
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026994 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026995 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026997 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026998 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026999
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027000 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27001 {
27002 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27003 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27004 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27005 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27006 pRcvPktFilterCfg->paramsData[i].dataOffset =
27007 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27008 pRcvPktFilterCfg->paramsData[i].dataLength =
27009 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027010
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027011 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027012 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27013 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027014 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027015 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27016 8);
27017
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027019 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027020 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027021 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27022
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027024 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027025 pRcvPktFilterCfg->paramsData[i].dataOffset,
27026 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027027
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027029 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027030 pRcvPktFilterCfg->paramsData[i].compareData[0],
27031 pRcvPktFilterCfg->paramsData[i].compareData[1],
27032 pRcvPktFilterCfg->paramsData[i].compareData[2],
27033 pRcvPktFilterCfg->paramsData[i].compareData[3],
27034 pRcvPktFilterCfg->paramsData[i].compareData[4],
27035 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027036
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027038 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027039 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27040 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27041 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27042 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27043 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27044 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27045 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027046
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027047 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027048 pRcvPktFilterCfg,
27049 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027050
27051
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027052 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27053 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027054
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027056 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027057 wpalMemoryFree(pRcvPktFilterCfg);
27058 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027060 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027061 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027062 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027063 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027064 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027065}
27066
27067/**
27068 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027069
27070 @param pWDICtx: pointer to the WLAN DAL context
27071 pEventData: pointer to the event information structure
27072
Jeff Johnson295189b2012-06-20 16:38:30 -070027073 @see
27074 @return Result of the function call
27075*/
27076WDI_Status
27077WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027078(
Jeff Johnson295189b2012-06-20 16:38:30 -070027079 WDI_ControlBlockType* pWDICtx,
27080 WDI_EventInfoType* pEventData
27081)
27082{
27083 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27084 NULL;
27085 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27086 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027087 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027088 wpt_uint16 usDataOffset = 0;
27089 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027090 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27091 wpt_uint8 ucCurrentBSSSesIdx = 0;
27092 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027093
27094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027095 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027096
27097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027098 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027099 -------------------------------------------------------------------------*/
27100 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027101 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027102 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027103 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027104 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27105 {
27106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027107 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027110 }
27111
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027112 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27113 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27114 &pBSSSes);
27115 if ( NULL == pBSSSes )
27116 {
27117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027118 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027119 return WDI_STATUS_E_FAILURE;
27120 }
27121
Jeff Johnson295189b2012-06-20 16:38:30 -070027122 /*-----------------------------------------------------------------------
27123 Get message buffer
27124 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027125 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27126 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027127 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027128 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027129 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027130 {
27131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27132 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027133 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027134 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27135 wdiFilterMatchCountCb);
27136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027138 }
27139
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027140 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27141 wpalMemoryCopy( pSendBuffer+usDataOffset,
27142 &rcvFltPktMatchCntReqParam,
27143 sizeof(rcvFltPktMatchCntReqParam));
27144
Jeff Johnson295189b2012-06-20 16:38:30 -070027145 //
27146 // Don't need to fill send buffer other than header
27147 //
27148 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027149 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027150
27151
27152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027153 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027154 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27156 wdiFilterMatchCountCb,
27157 pEventData->pUserData,
27158 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027159}
27160
27161/**
27162 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027163
27164 @param pWDICtx: pointer to the WLAN DAL context
27165 pEventData: pointer to the event information structure
27166
Jeff Johnson295189b2012-06-20 16:38:30 -070027167 @see
27168 @return Result of the function call
27169*/
27170WDI_Status
27171WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027172(
Jeff Johnson295189b2012-06-20 16:38:30 -070027173 WDI_ControlBlockType* pWDICtx,
27174 WDI_EventInfoType* pEventData
27175)
Jeff Johnsone7245742012-09-05 17:12:55 -070027176{
Jeff Johnson295189b2012-06-20 16:38:30 -070027177 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27178 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027179 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027180 wpt_uint16 usDataOffset = 0;
27181 wpt_uint16 usSendSize = 0;
27182 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027183 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027184 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027185
27186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027187 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027188
27189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027190 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027191 -------------------------------------------------------------------------*/
27192 if (( NULL == pEventData ) ||
27193 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27194 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027195 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027196 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27197 {
27198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027199 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027200 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027201 return WDI_STATUS_E_FAILURE;
27202 }
27203
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027204 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027205 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27206 &pBSSSes);
27207 if ( NULL == pBSSSes )
27208 {
27209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027210 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027212 }
27213
27214 /*-----------------------------------------------------------------------
27215 Get message buffer
27216 -----------------------------------------------------------------------*/
27217 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027218 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027219 sizeof(tHalRcvFltPktClearParam),
27220 &pSendBuffer, &usDataOffset, &usSendSize))||
27221 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27222 {
27223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27224 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027225 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027226 pEventData, pwdiRcvFltPktClearReqParamsType,
27227 wdiRcvFltPktClearFilterCb);
27228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027230 }
27231
27232
27233 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027234 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027235 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027236 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027237
Jeff Johnsone7245742012-09-05 17:12:55 -070027238 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27239 wpalMemoryCopy( pSendBuffer+usDataOffset,
27240 &rcvFltPktClearParam,
27241 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027242
27243 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027244 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027245
27246
27247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027248 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027249 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027250 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027251 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027252 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027253}
27254
27255/**
27256 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027257
27258 @param pWDICtx: pointer to the WLAN DAL context
27259 pEventData: pointer to the event information structure
27260
Jeff Johnson295189b2012-06-20 16:38:30 -070027261 @see
27262 @return Result of the function call
27263*/
27264WDI_Status
27265WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027266(
Jeff Johnson295189b2012-06-20 16:38:30 -070027267 WDI_ControlBlockType* pWDICtx,
27268 WDI_EventInfoType* pEventData
27269)
27270{
Jeff Johnson295189b2012-06-20 16:38:30 -070027271 eHalStatus halStatus;
27272 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027273 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27274 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27276
27277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027278 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027279
27280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027281 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027282 -------------------------------------------------------------------------*/
27283 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27284 ( NULL == pEventData->pEventData ))
27285 {
27286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027287 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027288 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027290 }
27291
Jeff Johnsone7245742012-09-05 17:12:55 -070027292 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027293
27294 /*-------------------------------------------------------------------------
27295 Extract response and send it to UMAC
27296 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027297 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27298 {
27299 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27300 pEventData->pEventData,
27301 sizeof(halRcvFltPktSetMcListRsp));
27302
27303 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27304 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27305 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27306 halRcvFltPktSetMcListRsp.bssIdx;
27307 }
27308 else
27309 {
27310 halStatus = *((eHalStatus*)pEventData->pEventData);
27311 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27312 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027313
27314 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027315 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027316
Jeff Johnsone7245742012-09-05 17:12:55 -070027317 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027318}
27319
27320/**
27321 @brief Process Set Rsp function (called when a
27322 response is being received over the bus from HAL)
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_ProcessReceiveFilterSetFilterRsp
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{
Jeff Johnson295189b2012-06-20 16:38:30 -070027337 eHalStatus halStatus;
27338 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027339 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27340 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27342
27343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027344 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027345
27346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027347 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027348 -------------------------------------------------------------------------*/
27349 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27350 ( NULL == pEventData->pEventData ))
27351 {
27352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027353 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027356 }
27357
27358 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027359 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027360
27361 /*-------------------------------------------------------------------------
27362 Extract response and send it to UMAC
27363 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027364 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27365 {
27366 wpalMemoryCopy( &halSetPktFilterRspParams,
27367 pEventData->pEventData,
27368 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027369
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027370 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27371 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27372 }
27373 else
27374 {
27375 halStatus = *((eHalStatus*)pEventData->pEventData);
27376 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27377 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027378 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027379 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027380
Jeff Johnsone7245742012-09-05 17:12:55 -070027381 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027382}
27383
27384/**
27385 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027386
27387 @param pWDICtx: pointer to the WLAN DAL context
27388 pEventData: pointer to the event information structure
27389
Jeff Johnson295189b2012-06-20 16:38:30 -070027390 @see
27391 @return Result of the function call
27392*/
27393WDI_Status
27394WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027395(
Jeff Johnson295189b2012-06-20 16:38:30 -070027396 WDI_ControlBlockType* pWDICtx,
27397 WDI_EventInfoType* pEventData
27398)
27399{
Jeff Johnson295189b2012-06-20 16:38:30 -070027400 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027401 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027402 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27403 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027404
27405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27406
27407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027408 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027409
27410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027412 -------------------------------------------------------------------------*/
27413 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27414 ( NULL == pEventData->pEventData ))
27415 {
27416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027420 }
27421
Jeff Johnsone7245742012-09-05 17:12:55 -070027422 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027423
27424 /*-------------------------------------------------------------------------
27425 Extract response and send it to UMAC
27426 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027427 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27428 {
27429 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27430 pEventData->pEventData,
27431 sizeof(halRcvFltrPktMatachRsp));
27432
27433 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27434 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27435 }
27436 else
27437 {
27438 halStatus = *((eHalStatus*)pEventData->pEventData);
27439 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27440 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027441
27442 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027443 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027444
Jeff Johnsone7245742012-09-05 17:12:55 -070027445 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027446}
27447
27448/**
27449 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027450
27451 @param pWDICtx: pointer to the WLAN DAL context
27452 pEventData: pointer to the event information structure
27453
Jeff Johnson295189b2012-06-20 16:38:30 -070027454 @see
27455 @return Result of the function call
27456*/
27457WDI_Status
27458WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027459(
Jeff Johnson295189b2012-06-20 16:38:30 -070027460 WDI_ControlBlockType* pWDICtx,
27461 WDI_EventInfoType* pEventData
27462)
27463{
Jeff Johnson295189b2012-06-20 16:38:30 -070027464 eHalStatus halStatus;
27465 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027466 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27467 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27469
27470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027471 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027472
27473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027475 -------------------------------------------------------------------------*/
27476 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27477 ( NULL == pEventData->pEventData ))
27478 {
27479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027483 }
27484
27485 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027486 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027487
27488 /*-------------------------------------------------------------------------
27489 Extract response and send it to UMAC
27490 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027491 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27492 {
27493 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
27494 pEventData->pEventData,
27495 sizeof(halRcvFltPktClearRspMsg));
27496
27497 wdiRcvFltPktClearRspParamsType.wdiStatus =
27498 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
27499 wdiRcvFltPktClearRspParamsType.bssIdx =
27500 halRcvFltPktClearRspMsg.bssIdx;
27501 }
27502 else
27503 {
27504 halStatus = *((eHalStatus*)pEventData->pEventData);
27505 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27506 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027507
27508 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027509 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027510
Jeff Johnsone7245742012-09-05 17:12:55 -070027511 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027512}
27513#endif // WLAN_FEATURE_PACKET_FILTERING
27514
27515/**
27516 @brief Process Shutdown Rsp function
27517 There is no shutdown response comming from HAL
27518 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070027519
Jeff Johnson295189b2012-06-20 16:38:30 -070027520 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070027521 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070027522
27523 @see
27524 @return Result of the function call
27525*/
27526WDI_Status
27527WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027528(
Jeff Johnson295189b2012-06-20 16:38:30 -070027529 WDI_ControlBlockType* pWDICtx,
27530 WDI_EventInfoType* pEventData
27531)
27532{
27533 /*There is no shutdown response comming from HAL - function just kept for
27534 simmetry */
27535 WDI_ASSERT(0);
27536 return WDI_STATUS_SUCCESS;
27537}/*WDI_ProcessShutdownRsp*/
27538
27539/**
27540 @brief WDI_SetPowerParamsReq
27541
Jeff Johnsone7245742012-09-05 17:12:55 -070027542 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070027543 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070027544
Jeff Johnson295189b2012-06-20 16:38:30 -070027545 wdiPowerParamsCb: callback for passing back the response
27546 of the Set Power Params operation received from the
27547 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027548
Jeff Johnson295189b2012-06-20 16:38:30 -070027549 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027550 callback
27551
Jeff Johnson295189b2012-06-20 16:38:30 -070027552 @return Result of the function call
27553*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027554WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027555WDI_SetPowerParamsReq
27556(
27557 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
27558 WDI_SetPowerParamsCb wdiPowerParamsCb,
27559 void* pUserData
27560)
27561{
27562 WDI_EventInfoType wdiEventData;
27563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27564
27565 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027566 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027567 ------------------------------------------------------------------------*/
27568 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27569 {
27570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27571 "WDI API call before module is initialized - Fail request");
27572
Jeff Johnsone7245742012-09-05 17:12:55 -070027573 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027574 }
27575
27576 /*------------------------------------------------------------------------
27577 Fill in Event data and post to the Main FSM
27578 ------------------------------------------------------------------------*/
27579 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027580 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027581 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027582 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027583 wdiEventData.pUserData = pUserData;
27584
27585 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27586}/*WDI_SetPowerParamsReq*/
27587
27588/**
27589 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027590
27591 @param pWDICtx: pointer to the WLAN DAL context
27592 pEventData: pointer to the event information structure
27593
Jeff Johnson295189b2012-06-20 16:38:30 -070027594 @see
27595 @return Result of the function call
27596*/
27597WDI_Status
27598WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027599(
Jeff Johnson295189b2012-06-20 16:38:30 -070027600 WDI_ControlBlockType* pWDICtx,
27601 WDI_EventInfoType* pEventData
27602)
27603{
27604 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
27605 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027606 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027607 wpt_uint16 usDataOffset = 0;
27608 wpt_uint16 usSendSize = 0;
27609 tSetPowerParamsType powerParams;
27610
27611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027613 -------------------------------------------------------------------------*/
27614 if (( NULL == pEventData ) ||
27615 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
27616 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
27617 {
27618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027619 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027622 }
27623
27624 /*-----------------------------------------------------------------------
27625 Get message buffer
27626 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027627 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027628 sizeof(powerParams),
27629 &pSendBuffer, &usDataOffset, &usSendSize))||
27630 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
27631 {
27632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027633 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027634 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
27635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027637 }
27638
27639 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070027640 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070027641 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
27642
27643 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027644 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070027645 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
27646
27647 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027648 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070027649 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
27650
27651 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070027652 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070027653 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
27654
27655 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070027656 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070027657 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
27658
27659 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027660 powerParams.uBETInterval =
27661 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070027662
Yue Mac24062f2013-05-13 17:01:29 -070027663 /* MAX LI for modulated DTIM */
27664 powerParams.uMaxLIModulatedDTIM =
27665 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070027666
27667 wpalMemoryCopy( pSendBuffer+usDataOffset,
27668 &powerParams,
27669 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027670
27671 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027672 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027673
27674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027675 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027676 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027677 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27678 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027679}
27680
27681/**
27682 @brief Process Power Params Rsp function (called when a
27683 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027684
27685 @param pWDICtx: pointer to the WLAN DAL context
27686 pEventData: pointer to the event information structure
27687
Jeff Johnson295189b2012-06-20 16:38:30 -070027688 @see
27689 @return Result of the function call
27690*/
27691WDI_Status
27692WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027693(
Jeff Johnson295189b2012-06-20 16:38:30 -070027694 WDI_ControlBlockType* pWDICtx,
27695 WDI_EventInfoType* pEventData
27696)
27697{
27698 WDI_Status wdiStatus;
27699 eHalStatus halStatus;
27700 WDI_SetPowerParamsCb wdiPowerParamsCb;
27701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27702
27703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027704 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027705 -------------------------------------------------------------------------*/
27706 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27707 ( NULL == pEventData->pEventData ))
27708 {
27709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027710 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027713 }
27714
Jeff Johnsone7245742012-09-05 17:12:55 -070027715 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027716
27717 /*-------------------------------------------------------------------------
27718 Extract response and send it to UMAC
27719 -------------------------------------------------------------------------*/
27720 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027721 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027722
27723 /*Notify UMAC*/
27724 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27725
Jeff Johnsone7245742012-09-05 17:12:55 -070027726 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027727}/*WDI_ProcessSetPowerParamsRsp*/
27728
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027729/**
27730 @brief WDI_dhcpStartInd
27731 Host will send an event to the FW when DHCP is initiated
27732
27733 @param
27734 WDI_DHCPInd: DHCP Indication
27735 @see
27736 @return Result of the function call
27737*/
27738WDI_Status
27739WDI_dhcpStartInd
27740(
27741 WDI_DHCPInd *wdiDHCPInd
27742)
27743{
27744 WDI_EventInfoType wdiEventData;
27745
27746 /*------------------------------------------------------------------------
27747 Sanity Check
27748 ------------------------------------------------------------------------*/
27749 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27750 {
27751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27752 "WDI API call before module is initialized - Fail request");
27753
27754 return WDI_STATUS_E_NOT_ALLOWED;
27755 }
27756
27757 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
27758 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027759 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027760 wdiEventData.pCBfnc = NULL;
27761 wdiEventData.pUserData = NULL;
27762
27763 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27764}
27765
27766
27767/**
27768 @brief WDI_dhcpStopInd
27769 Host will send an event to the FW when DHCP is completed
27770
27771 @param
27772 WDI_DHCPInd: DHCP Indication
27773 @see
27774 @return Result of the function call
27775*/
27776WDI_Status
27777WDI_dhcpStopInd
27778(
27779 WDI_DHCPInd *wdiDHCPInd
27780)
27781{
27782 WDI_EventInfoType wdiEventData;
27783
27784 /*------------------------------------------------------------------------
27785 Sanity Check
27786 ------------------------------------------------------------------------*/
27787 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27788 {
27789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27790 "WDI API call before module is initialized - Fail request");
27791
27792 return WDI_STATUS_E_NOT_ALLOWED;
27793 }
27794
27795 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
27796 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027797 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027798 wdiEventData.pCBfnc = NULL;
27799 wdiEventData.pUserData = NULL;
27800
27801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27802}
27803
27804
27805/**
27806 @brief Process DHCP Start Indication message and post it to HAL
27807
27808 @param pWDICtx: pointer to the WLAN DAL context
27809 pEventData: pointer to the event information structure
27810
27811 @see
27812 @return Result of the function call
27813*/
27814WDI_Status
27815WDI_ProcessDHCPStartInd
27816(
27817 WDI_ControlBlockType* pWDICtx,
27818 WDI_EventInfoType* pEventData
27819)
27820{
27821 wpt_uint8* pSendBuffer = NULL;
27822 wpt_uint16 usDataOffset = 0;
27823 wpt_uint16 usSendSize = 0;
27824 wpt_uint16 usLen = 0;
27825 WDI_DHCPInd* pwdiDHCPInd = NULL;
27826 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027827 WDI_Status wdiStatus;
27828
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027829
27830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27831
27832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27833 "%s", __func__);
27834
27835 /*-------------------------------------------------------------------------
27836 Sanity check
27837 -------------------------------------------------------------------------*/
27838 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27839 {
27840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27841 "%s: Invalid parameters", __func__);
27842 WDI_ASSERT(0);
27843 return WDI_STATUS_E_FAILURE;
27844 }
27845 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27846 /*-----------------------------------------------------------------------
27847 Get message buffer
27848 -----------------------------------------------------------------------*/
27849
27850 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27851 WDI_DHCP_START_IND,
27852 sizeof(tDHCPInfo),
27853 &pSendBuffer, &usDataOffset, &usSendSize))||
27854 ( usSendSize < (usDataOffset + usLen )))
27855 {
27856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27857 "Unable to get send buffer in DHCP Start req %p ",
27858 pEventData);
27859 WDI_ASSERT(0);
27860 return WDI_STATUS_E_FAILURE;
27861 }
27862
Sandeep Puligillaee789512014-02-13 19:14:52 +053027863 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027864 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27865 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27866 WDI_MAC_ADDR_LEN);
27867
27868 pWDICtx->pReqStatusUserData = NULL;
27869 pWDICtx->pfncRspCB = NULL;
27870
27871 /*-------------------------------------------------------------------------
27872 Send DHCP Start Indication to HAL
27873 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027874 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27875 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027876}/*WDI_ProcessDHCPStartInd*/
27877
27878/**
27879 @brief Process DHCP Stop indication message and post it to HAL
27880
27881 @param pWDICtx: pointer to the WLAN DAL context
27882 pEventData: pointer to the event information structure
27883
27884 @see
27885 @return Result of the function call
27886*/
27887WDI_Status
27888WDI_ProcessDHCPStopInd
27889(
27890 WDI_ControlBlockType* pWDICtx,
27891 WDI_EventInfoType* pEventData
27892)
27893{
27894 wpt_uint8* pSendBuffer = NULL;
27895 wpt_uint16 usDataOffset = 0;
27896 wpt_uint16 usSendSize = 0;
27897 wpt_uint16 usLen = 0;
27898 WDI_DHCPInd* pwdiDHCPInd = NULL;
27899 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027900 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027901
27902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27903
27904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27905 "%s", __func__);
27906
27907 /*-------------------------------------------------------------------------
27908 Sanity check
27909 -------------------------------------------------------------------------*/
27910
27911 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27912 {
27913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27914 "%s: Invalid parameters", __func__);
27915 WDI_ASSERT(0);
27916 return WDI_STATUS_E_FAILURE;
27917 }
27918 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27919 /*-----------------------------------------------------------------------
27920 Get message buffer
27921 -----------------------------------------------------------------------*/
27922
27923 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27924 WDI_DHCP_STOP_IND,
27925 sizeof(tDHCPInfo),
27926 &pSendBuffer, &usDataOffset, &usSendSize))||
27927 ( usSendSize < (usDataOffset + usLen )))
27928 {
27929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27930 "Unable to get send buffer in DHCP Start req %p ",
27931 pEventData);
27932 WDI_ASSERT(0);
27933 return WDI_STATUS_E_FAILURE;
27934 }
27935
Sandeep Puligillaee789512014-02-13 19:14:52 +053027936 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027937 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27938 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27939 WDI_MAC_ADDR_LEN);
27940
27941 pWDICtx->pReqStatusUserData = NULL;
27942 pWDICtx->pfncRspCB = NULL;
27943 /*-------------------------------------------------------------------------
27944 Send DHCP Stop indication to HAL
27945 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027946 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27947 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027948
27949}/*WDI_ProcessDHCPStopInd*/
27950
27951
Jeff Johnson295189b2012-06-20 16:38:30 -070027952#ifdef WLAN_FEATURE_GTK_OFFLOAD
27953/**
27954 @brief WDI_GTKOffloadReq will be called when the upper MAC
27955 wants to set GTK Rekey Counter while in power save. Upon
27956 the call of this API the WLAN DAL will pack and send a
27957 HAL GTK offload request message to the lower RIVA
27958 sub-system if DAL is in state STARTED.
27959
27960 In state BUSY this request will be queued. Request won't
27961 be allowed in any other state.
27962
27963 WDI_PostAssocReq must have been called.
27964
27965 @param pwdiGtkOffloadParams: the GTK offload as specified
27966 by the Device Interface
27967
27968 wdiGtkOffloadCb: callback for passing back the response
27969 of the GTK offload operation received from the device
27970
27971 pUserData: user data will be passed back with the
27972 callback
27973
27974 @see WDI_PostAssocReq
27975 @return Result of the function call
27976*/
27977WDI_Status
27978WDI_GTKOffloadReq
27979(
27980 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27981 WDI_GtkOffloadCb wdiGtkOffloadCb,
27982 void* pUserData
27983)
27984{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027985 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27987
27988 /*------------------------------------------------------------------------
27989 Sanity Check
27990 ------------------------------------------------------------------------*/
27991 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27992 {
27993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27994 "WDI API call before module is initialized - Fail request");
27995
27996 return WDI_STATUS_E_NOT_ALLOWED;
27997 }
27998
27999 /*------------------------------------------------------------------------
28000 Fill in Event data and post to the Main FSM
28001 ------------------------------------------------------------------------*/
28002 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28003 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028004 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028005 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28006 wdiEventData.pUserData = pUserData;
28007
28008 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28009}
28010
28011
28012/**
28013 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28014 MAC wants to get GTK Rekey Counter while in power save.
28015 Upon the call of this API the WLAN DAL will pack and
28016 send a HAL GTK offload request message to the lower RIVA
28017 sub-system if DAL is in state STARTED.
28018
28019 In state BUSY this request will be queued. Request won't
28020 be allowed in any other state.
28021
28022 WDI_PostAssocReq must have been called.
28023
28024 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28025 Information Message as specified by the
28026 Device Interface
28027
28028 wdiGtkOffloadGetInfoCb: callback for passing back the
28029 response of the GTK offload operation received from the
28030 device
28031
28032 pUserData: user data will be passed back with the
28033 callback
28034
28035 @see WDI_PostAssocReq
28036 @return Result of the function call
28037*/
28038WDI_Status
28039WDI_GTKOffloadGetInfoReq
28040(
28041 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28042 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28043 void* pUserData
28044)
28045{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028046 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28048
28049 /*------------------------------------------------------------------------
28050 Sanity Check
28051 ------------------------------------------------------------------------*/
28052 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28053 {
28054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28055 "WDI API call before module is initialized - Fail request");
28056
28057 return WDI_STATUS_E_NOT_ALLOWED;
28058 }
28059
28060 /*------------------------------------------------------------------------
28061 Fill in Event data and post to the Main FSM
28062 ------------------------------------------------------------------------*/
28063 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28064 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28065 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28066 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28067 wdiEventData.pUserData = pUserData;
28068
28069 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28070}
28071
28072
28073/**
28074 @brief Process set GTK Offload Request function
28075
28076 @param pWDICtx: pointer to the WLAN DAL context
28077 pEventData: pointer to the event information structure
28078
28079 @see
28080 @return Result of the function call
28081*/
28082WDI_Status
28083WDI_ProcessGTKOffloadReq
28084(
28085 WDI_ControlBlockType* pWDICtx,
28086 WDI_EventInfoType* pEventData
28087)
28088{
28089 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28090 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28091 wpt_uint8* pSendBuffer = NULL;
28092 wpt_uint16 usDataOffset = 0;
28093 wpt_uint16 usSendSize = 0;
28094 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028095 wpt_uint8 ucCurrentSessionId = 0;
28096 WDI_BSSSessionType* pBSSSes = NULL;
28097
Jeff Johnson295189b2012-06-20 16:38:30 -070028098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28099
28100 /*-------------------------------------------------------------------------
28101 Sanity check
28102 -------------------------------------------------------------------------*/
28103 if (( NULL == pEventData ) ||
28104 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28105 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28106 {
28107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028109 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028110 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028111 }
28112
28113 /*-----------------------------------------------------------------------
28114 Get message buffer
28115 -----------------------------------------------------------------------*/
28116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28117 sizeof(gtkOffloadReqParams),
28118 &pSendBuffer, &usDataOffset, &usSendSize))||
28119 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28120 {
28121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028122 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028123 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28124 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028125 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028126 }
28127
28128 //
28129 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28130 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028131 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28132 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28133 &pBSSSes);
28134 if ( NULL == pBSSSes )
28135 {
28136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028137 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028138 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028139 }
28140
28141 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28142
Jeff Johnson295189b2012-06-20 16:38:30 -070028143 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28144 // Copy KCK
28145 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28146 // Copy KEK
28147 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28148 // Copy KeyReplayCounter
28149 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28150
28151 wpalMemoryCopy( pSendBuffer+usDataOffset,
28152 &gtkOffloadReqParams,
28153 sizeof(gtkOffloadReqParams));
28154
28155 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28156 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28157
28158 /*-------------------------------------------------------------------------
28159 Send Get STA Request to HAL
28160 -------------------------------------------------------------------------*/
28161 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28162 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028163
28164fail:
28165 // Release the message buffer so we don't leak
28166 wpalMemoryFree(pSendBuffer);
28167
28168failRequest:
28169 //WDA should have failure check to avoid the memory leak
28170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028171}
28172
28173
28174/**
28175 @brief Process GTK Offload Get Information Request function
28176
28177 @param pWDICtx: pointer to the WLAN DAL context
28178 pEventData: pointer to the event information structure
28179
28180 @see
28181 @return Result of the function call
28182*/
28183WDI_Status
28184WDI_ProcessGTKOffloadGetInfoReq
28185(
28186 WDI_ControlBlockType* pWDICtx,
28187 WDI_EventInfoType* pEventData
28188)
28189{
28190 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28191 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28192 wpt_uint8* pSendBuffer = NULL;
28193 wpt_uint16 usDataOffset = 0;
28194 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028195 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28196 wpt_uint8 ucCurrentSessionId = 0;
28197 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028198
28199 /*-------------------------------------------------------------------------
28200 Sanity check
28201 -------------------------------------------------------------------------*/
28202 if (( NULL == pEventData ) ||
28203 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28204 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28205 {
28206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028207 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028208 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028209 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028210 }
28211
28212 /*-----------------------------------------------------------------------
28213 Get message buffer
28214 -----------------------------------------------------------------------*/
28215 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028216 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028217 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028218 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028219 {
28220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028221 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028222 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28223 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028224 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028225 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028226 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28227 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28228 &pBSSSes);
28229 if ( NULL == pBSSSes )
28230 {
28231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028232 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028233 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028234 }
28235 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028236
28237 //
28238 // Don't need to fill send buffer other than header
28239 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028240 wpalMemoryCopy( pSendBuffer+usDataOffset,
28241 &halGtkOffloadGetInfoReqParams,
28242 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028243
28244 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28245 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28246
28247 /*-------------------------------------------------------------------------
28248 Send Get STA Request to HAL
28249 -------------------------------------------------------------------------*/
28250 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28251 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028252fail:
28253 // Release the message buffer so we don't leak
28254 wpalMemoryFree(pSendBuffer);
28255
28256failRequest:
28257 //WDA should have failure check to avoid the memory leak
28258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028259}
28260
28261/**
28262 @brief Process host offload Rsp function (called when a
28263 response is being received over the bus from HAL)
28264
28265 @param pWDICtx: pointer to the WLAN DAL context
28266 pEventData: pointer to the event information structure
28267
28268 @see
28269 @return Result of the function call
28270*/
28271WDI_Status
28272WDI_ProcessGtkOffloadRsp
28273(
28274 WDI_ControlBlockType* pWDICtx,
28275 WDI_EventInfoType* pEventData
28276)
28277{
Jeff Johnson295189b2012-06-20 16:38:30 -070028278 eHalStatus halStatus;
28279 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028280 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28281 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028282
28283 /*-------------------------------------------------------------------------
28284 Sanity check
28285 -------------------------------------------------------------------------*/
28286 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28287 ( NULL == pEventData->pEventData))
28288 {
28289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028290 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028291 WDI_ASSERT(0);
28292 return WDI_STATUS_E_FAILURE;
28293 }
28294
Wilson Yang00256342013-10-10 23:13:38 -070028295 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28296
Jeff Johnson295189b2012-06-20 16:38:30 -070028297 /*-------------------------------------------------------------------------
28298 Extract response and send it to UMAC
28299 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028300 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28301 {
28302 wpalMemoryCopy( &halGtkOffloadRspParams,
28303 pEventData->pEventData,
28304 sizeof(halGtkOffloadRspParams));
28305
28306 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028307 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028308 wdiGtkOffloadRsparams.bssIdx =
28309 halGtkOffloadRspParams.bssIdx;
28310 }
28311 else
28312 {
28313 halStatus = *((eHalStatus*)pEventData->pEventData);
28314 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28315 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028316
28317 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028318 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028319
28320 return WDI_STATUS_SUCCESS;
28321}
28322
28323/**
28324 @brief Process GTK Offload Get Information Response function
28325
28326 @param pWDICtx: pointer to the WLAN DAL context
28327 pEventData: pointer to the event information structure
28328
28329 @see
28330 @return Result of the function call
28331*/
28332WDI_Status
28333WDI_ProcessGTKOffloadGetInfoRsp
28334(
28335 WDI_ControlBlockType* pWDICtx,
28336 WDI_EventInfoType* pEventData
28337)
28338{
Jeff Johnson295189b2012-06-20 16:38:30 -070028339 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028340 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028341 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28342 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028343 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028344
Jeff Johnson295189b2012-06-20 16:38:30 -070028345
28346 /*-------------------------------------------------------------------------
28347 Sanity check
28348 -------------------------------------------------------------------------*/
28349 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28350 ( NULL == pEventData->pEventData ))
28351 {
28352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028353 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028354 WDI_ASSERT(0);
28355 return WDI_STATUS_E_FAILURE;
28356 }
28357
Wilson Yang00256342013-10-10 23:13:38 -070028358 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28359
28360 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028361 Extract response and send it to UMAC
28362 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028363 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28364 {
28365 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28366 pEventData->pEventData,
28367 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028368
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028369 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028370 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028371 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28372 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28373 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28374 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28375 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28376 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28377 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28378 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028379
28380 wpalMutexAcquire(&pWDICtx->wptMutex);
28381 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28382 &pBSSSes);
28383
28384 if ( NULL == pBSSSes )
28385 {
28386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28387 "Association sequence for this BSS does not exist or "
28388 "association no longer in progress - mysterious HAL response");
28389 wpalMutexRelease(&pWDICtx->wptMutex);
28390 return WDI_STATUS_E_NOT_ALLOWED;
28391 }
28392
28393 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28394 sizeof (wpt_macAddr));
28395 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028396 }
28397 else
28398 {
28399 halStatus = *((eHalStatus*)pEventData->pEventData);
28400 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28401 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028402 /*Notify UMAC*/
28403 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28404 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028405 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028406
28407 return WDI_STATUS_SUCCESS;
28408}
28409#endif // WLAN_FEATURE_GTK_OFFLOAD
28410
28411#ifdef WLAN_WAKEUP_EVENTS
28412WDI_Status
28413WDI_ProcessWakeReasonInd
28414(
28415 WDI_ControlBlockType* pWDICtx,
28416 WDI_EventInfoType* pEventData
28417)
28418{
28419 WDI_LowLevelIndType *pWdiInd;
28420 tpWakeReasonParams pWakeReasonParams;
28421 wpt_uint32 allocSize = 0;
28422
28423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028424 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028425
28426 /*-------------------------------------------------------------------------
28427 Sanity check
28428 -------------------------------------------------------------------------*/
28429 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28430 ( NULL == pEventData->pEventData ))
28431 {
28432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028433 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028434 WDI_ASSERT( 0 );
28435 return WDI_STATUS_E_FAILURE;
28436 }
28437
28438 /*-------------------------------------------------------------------------
28439 Extract indication and send it to UMAC
28440 -------------------------------------------------------------------------*/
28441 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28442
28443 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28444
28445 //Allocate memory for WDI_WakeReasonIndType structure
28446 pWdiInd = wpalMemoryAllocate(allocSize) ;
28447
28448 if(NULL == pWdiInd)
28449 {
28450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028451 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028452 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028453 WDI_ASSERT(0);
28454 return WDI_STATUS_E_FAILURE;
28455 }
28456
28457 wpalMemoryZero(pWdiInd, allocSize);
28458
28459 /* Fill in the indication parameters*/
28460 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28461 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28462 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28463 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28464 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28465 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28466 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28467 &(pWakeReasonParams->aDataStart[0]),
28468 pWakeReasonParams->ulStoredDataLen);
28469
ltimariub77f24b2013-01-24 18:54:33 -080028470
28471 if ( pWDICtx->wdiLowLevelIndCB )
28472 {
28473 /*Notify UMAC*/
28474 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28475 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028476
28477 //Free memory allocated for WDI_WakeReasonIndType structure
28478 wpalMemoryFree(pWdiInd);
28479
28480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028481 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028482
28483 return WDI_STATUS_SUCCESS;
28484}
28485#endif // WLAN_WAKEUP_EVENTS
28486
28487void WDI_GetWcnssCompiledApiVersion
28488(
28489 WDI_WlanVersionType *pWcnssApiVersion
28490)
28491{
28492 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
28493 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
28494 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
28495 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
28496}
28497
28498/**
28499 @brief Process Set TM Level Rsp function (called when a
28500 response is being received over the bus from HAL)
28501
28502 @param pWDICtx: pointer to the WLAN DAL context
28503 pEventData: pointer to the event information structure
28504
28505 @see
28506 @return Result of the function call
28507*/
28508WDI_Status
28509WDI_ProcessSetTmLevelRsp
28510(
28511 WDI_ControlBlockType* pWDICtx,
28512 WDI_EventInfoType* pEventData
28513)
28514{
28515 WDI_Status wdiStatus;
28516 eHalStatus halStatus;
28517 WDI_SetTmLevelCb wdiSetTmLevelCb;
28518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28519
28520 /*-------------------------------------------------------------------------
28521 Sanity check
28522 -------------------------------------------------------------------------*/
28523 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28524 ( NULL == pEventData->pEventData ))
28525 {
28526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028528 WDI_ASSERT(0);
28529 return WDI_STATUS_E_FAILURE;
28530 }
28531
28532 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
28533
28534 /*-------------------------------------------------------------------------
28535 Extract response and send it to UMAC
28536 -------------------------------------------------------------------------*/
28537 halStatus = *((eHalStatus*)pEventData->pEventData);
28538 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28539
28540 /*Notify UMAC*/
28541 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
28542
28543 return WDI_STATUS_SUCCESS;
28544}/*WDI_ProcessSetTmLevelRsp*/
28545
28546/**
28547 @brief Process Set Thermal Mitigation level Changed request
28548
28549 @param pWDICtx: pointer to the WLAN DAL context
28550 pEventData: pointer to the event information structure
28551
28552 @see
28553 @return Result of the function call
28554*/
28555WDI_Status
28556WDI_ProcessSetTmLevelReq
28557(
28558 WDI_ControlBlockType* pWDICtx,
28559 WDI_EventInfoType* pEventData
28560)
28561{
28562 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
28563 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
28564 wpt_uint8* pSendBuffer = NULL;
28565 wpt_uint16 usDataOffset = 0;
28566 wpt_uint16 usSendSize = 0;
28567 tSetThermalMitgationType halTmMsg;
28568
28569 /*-------------------------------------------------------------------------
28570 Sanity check
28571 -------------------------------------------------------------------------*/
28572 if (( NULL == pEventData ) ||
28573 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
28574 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
28575 {
28576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028577 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028578 WDI_ASSERT(0);
28579 return WDI_STATUS_E_FAILURE;
28580 }
28581
28582 /*-----------------------------------------------------------------------
28583 Get message buffer
28584 -----------------------------------------------------------------------*/
28585 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
28586 sizeof(halTmMsg),
28587 &pSendBuffer, &usDataOffset, &usSendSize))||
28588 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
28589 {
28590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028591 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028592 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
28593 WDI_ASSERT(0);
28594 return WDI_STATUS_E_FAILURE;
28595 }
28596
28597 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
28598 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
28599
28600 wpalMemoryCopy( pSendBuffer+usDataOffset,
28601 &halTmMsg,
28602 sizeof(halTmMsg));
28603
28604 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
28605 pWDICtx->pfncRspCB = NULL;
28606 /*-------------------------------------------------------------------------
28607 Send Get STA Request to HAL
28608 -------------------------------------------------------------------------*/
28609 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28610 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
28611}
28612
28613/* Fill the value from the global features enabled array to the global capabilities
28614 * bitmap struct
28615 */
28616static void
28617FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
28618{
28619 wpt_int8 i;
28620 for (i=0; i<len; i++)
28621 {
28622 setFeatCaps(fCaps, enabledFeat[i]);
28623 }
28624}
28625
28626/**
28627 @brief WDI_featureCapsExchangeReq
28628 Post feature capability bitmap exchange event.
28629 Host will send its own capability to FW in this req and
28630 expect FW to send its capability back as a bitmap in Response
28631
28632 @param
28633
28634 wdiFeatureCapsExchangeCb: callback called on getting the response.
28635 It is kept to mantain similarity between WDI reqs and if needed, can
28636 be used in future. Currently, It is set to NULL
28637
28638 pUserData: user data will be passed back with the
28639 callback
28640
28641 @see
28642 @return Result of the function call
28643*/
28644WDI_Status
28645WDI_featureCapsExchangeReq
28646(
28647 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
28648 void* pUserData
28649)
28650{
28651 WDI_EventInfoType wdiEventData;
28652 wpt_int32 fCapsStructSize;
28653
28654 /*------------------------------------------------------------------------
28655 Sanity Check
28656 ------------------------------------------------------------------------*/
28657 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28658 {
28659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28660 "WDI API call before module is initialized - Fail request");
28661
28662 return WDI_STATUS_E_NOT_ALLOWED;
28663 }
28664
28665 /* Allocate memory separately for global variable carrying FW caps */
28666 fCapsStructSize = sizeof(tWlanFeatCaps);
28667 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28668 if ( NULL == gpHostWlanFeatCaps )
28669 {
28670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028671 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028672 WDI_ASSERT(0);
28673 return WDI_STATUS_MEM_FAILURE;
28674 }
28675
28676 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
28677
28678 /*------------------------------------------------------------------------
28679 Fill in Event data and post to the Main FSM
28680 ------------------------------------------------------------------------*/
28681 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
28682 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028684 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028685 gpHostWlanFeatCaps->featCaps[0],
28686 gpHostWlanFeatCaps->featCaps[1],
28687 gpHostWlanFeatCaps->featCaps[2],
28688 gpHostWlanFeatCaps->featCaps[3]
28689 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
28691 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028692 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
28693 wdiEventData.pEventData = gpHostWlanFeatCaps;
28694 wdiEventData.uEventDataSize = fCapsStructSize;
28695 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
28696 wdiEventData.pUserData = pUserData;
28697
28698 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28699}
28700
28701/**
Yathish9f22e662012-12-10 14:21:35 -080028702 @brief Disable Active mode offload in Host
28703
28704 @param void
28705 @see
28706 @return void
28707*/
28708void
28709WDI_disableCapablityFeature(wpt_uint8 feature_index)
28710{
28711 supportEnabledFeatures[feature_index] = 0;
28712 return;
28713}
28714
28715/**
Jeff Johnson295189b2012-06-20 16:38:30 -070028716 @brief Process Host-FW Capability Exchange Request function
28717
28718 @param pWDICtx: pointer to the WLAN DAL context
28719 pEventData: pointer to the event information structure
28720
28721 @see
28722 @return Result of the function call
28723*/
28724WDI_Status
28725WDI_ProcessFeatureCapsExchangeReq
28726(
28727 WDI_ControlBlockType* pWDICtx,
28728 WDI_EventInfoType* pEventData
28729)
28730{
28731 wpt_uint8* pSendBuffer = NULL;
28732 wpt_uint16 usDataOffset = 0;
28733 wpt_uint16 usSendSize = 0;
28734 wpt_uint16 usLen = 0;
28735
28736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28737
28738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028739 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028740
28741 /*-------------------------------------------------------------------------
28742 Sanity check
28743 -------------------------------------------------------------------------*/
28744 /* Call back function is NULL since not required for cap exchange req */
28745 if (( NULL == pEventData ) ||
28746 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
28747 {
28748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028749 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028750 WDI_ASSERT(0);
28751 return WDI_STATUS_E_FAILURE;
28752 }
28753
28754 /*-----------------------------------------------------------------------
28755 Get message buffer
28756 -----------------------------------------------------------------------*/
28757 usLen = sizeof(tWlanFeatCaps);
28758
28759 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28760 WDI_FEATURE_CAPS_EXCHANGE_REQ,
28761 usLen,
28762 &pSendBuffer, &usDataOffset, &usSendSize))||
28763 ( usSendSize < (usDataOffset + usLen )))
28764 {
28765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028766 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028767 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
28768 WDI_ASSERT(0);
28769 return WDI_STATUS_E_FAILURE;
28770 }
28771
28772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028773 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028774 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
28775 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
28776 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
28777 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
28778 );
28779
28780 /* Copy host caps after the offset in the send buffer */
28781 wpalMemoryCopy( pSendBuffer+usDataOffset,
28782 (tWlanFeatCaps *)pEventData->pEventData,
28783 usLen);
28784
28785 /*-------------------------------------------------------------------------
28786 Send Start Request to HAL
28787 -------------------------------------------------------------------------*/
28788 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28789 (WDI_StartRspCb)pEventData->pCBfnc,
28790 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
28791
28792}/*WDI_ProcessFeatureCapsExchangeReq*/
28793
28794/**
28795 @brief Process Host-FW Capability Exchange Response function
28796
28797 @param pWDICtx: pointer to the WLAN DAL context
28798 pEventData: pointer to the event information structure
28799
28800 @see
28801 @return Result of the function call
28802*/
28803WDI_Status
28804WDI_ProcessFeatureCapsExchangeRsp
28805(
28806 WDI_ControlBlockType* pWDICtx,
28807 WDI_EventInfoType* pEventData
28808)
28809{
28810 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
28811 wpt_int32 fCapsStructSize;
28812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28813
28814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028815 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028816
28817 /*-------------------------------------------------------------------------
28818 Sanity check
28819 -------------------------------------------------------------------------*/
28820 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28821 ( NULL == pEventData->pEventData ))
28822 {
28823 /* It will go here when riva is old (doesn't understand this msg) and host is new */
28824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028825 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028826 WDI_ASSERT(0);
28827 return WDI_STATUS_E_FAILURE;
28828 }
28829
28830 /* Allocate memory separately for global variable carrying FW caps */
28831 fCapsStructSize = sizeof(tWlanFeatCaps);
28832 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28833 if ( NULL == gpFwWlanFeatCaps )
28834 {
28835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028836 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028837 WDI_ASSERT(0);
28838 return WDI_STATUS_MEM_FAILURE;
28839 }
28840
28841 /*-------------------------------------------------------------------------
28842 Unpack HAL Response Message - the header was already extracted by the
28843 main Response Handling procedure
28844 -------------------------------------------------------------------------*/
28845 /*-------------------------------------------------------------------------
28846 Extract response and send it to UMAC
28847 -------------------------------------------------------------------------*/
28848
28849 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
28850 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028852 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028853 gpFwWlanFeatCaps->featCaps[0],
28854 gpFwWlanFeatCaps->featCaps[1],
28855 gpFwWlanFeatCaps->featCaps[2],
28856 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028857 );
28858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
28859 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028860 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
28861
28862 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
28863 if (wdiFeatureCapsExchangeCb != NULL)
28864 wdiFeatureCapsExchangeCb(NULL, NULL);
28865
28866 return WDI_STATUS_SUCCESS;
28867}
28868
Mohit Khanna4a70d262012-09-11 16:30:12 -070028869#ifdef WLAN_FEATURE_11AC
28870WDI_Status
28871WDI_ProcessUpdateVHTOpModeRsp
28872(
28873 WDI_ControlBlockType* pWDICtx,
28874 WDI_EventInfoType* pEventData
28875)
28876{
28877 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28878 WDI_Status wdiStatus;
28879 eHalStatus halStatus;
28880
28881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28882
28883 /*-------------------------------------------------------------------------
28884 Sanity check
28885 -------------------------------------------------------------------------*/
28886 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28887 ( NULL == pEventData->pEventData))
28888 {
28889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028890 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028891 WDI_ASSERT(0);
28892 return WDI_STATUS_E_FAILURE;
28893 }
28894 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
28895
28896 /*-------------------------------------------------------------------------
28897 Extract response and send it to UMAC
28898 -------------------------------------------------------------------------*/
28899 halStatus = *((eHalStatus*)pEventData->pEventData);
28900 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28901
28902 /*Notify UMAC*/
28903 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
28904
28905 return WDI_STATUS_SUCCESS;
28906}
28907#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028908/**
28909 @brief WDI_getHostWlanFeatCaps
28910 WDI API that returns whether the feature passed to it as enum value in
28911 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28912 variable storing host capability bitmap to find this. This can be used by
28913 other moduels to decide certain things like call different APIs based on
28914 whether a particular feature is supported.
28915
28916 @param
28917
28918 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28919
28920 @see
28921 @return
28922 0 - if the feature is NOT supported in host
28923 any non-zero value - if the feature is SUPPORTED in host.
28924*/
28925wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28926{
28927 wpt_uint8 featSupported = 0;
28928 if (gpHostWlanFeatCaps != NULL)
28929 {
28930 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28931 }
28932 else
28933 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028935 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028936 }
28937 return featSupported;
28938}
28939
28940/**
28941 @brief WDI_getFwWlanFeatCaps
28942 WDI API that returns whether the feature passed to it as enum value in
28943 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28944 variable storing host capability bitmap to find this. This can be used by
28945 other moduels to decide certain things like call different APIs based on
28946 whether a particular feature is supported.
28947
28948 @param
28949
28950 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28951 in wlan_hal_msg.h.
28952
28953 @see
28954 @return
28955 0 - if the feature is NOT supported in FW
28956 any non-zero value - if the feature is SUPPORTED in FW.
28957*/
28958wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28959{
28960 wpt_uint8 featSupported = 0;
28961 if (gpFwWlanFeatCaps != NULL)
28962 {
28963 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28964 }
28965 else
28966 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028968 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028969 }
28970 return featSupported;
28971}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028972
28973#ifdef WLAN_FEATURE_11AC
28974WDI_Status
28975WDI_ProcessUpdateVHTOpModeReq
28976(
28977 WDI_ControlBlockType* pWDICtx,
28978 WDI_EventInfoType* pEventData
28979)
28980{
28981 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28982 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28983 wpt_uint8* pSendBuffer = NULL;
28984 wpt_uint16 usDataOffset = 0;
28985 wpt_uint16 usSendSize = 0;
28986
28987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28988
28989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028990 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028991
28992 /*-------------------------------------------------------------------------
28993 Sanity check
28994 -------------------------------------------------------------------------*/
28995 if (( NULL == pEventData ) ||
28996 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28997 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28998 {
28999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029000 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029001 WDI_ASSERT(0);
29002 return WDI_STATUS_E_FAILURE;
29003 }
29004
29005 /*-----------------------------------------------------------------------
29006 Get message buffer
29007 -----------------------------------------------------------------------*/
29008 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29009 sizeof(WDI_UpdateVHTOpMode),
29010 &pSendBuffer, &usDataOffset, &usSendSize))||
29011 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29012 {
29013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29014 "Unable to get send buffer in update vht opMode req");
29015 WDI_ASSERT(0);
29016 return WDI_STATUS_E_FAILURE;
29017 }
29018
29019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029020 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029021
29022 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29023 sizeof(WDI_UpdateVHTOpMode));
29024
29025 /*-------------------------------------------------------------------------
29026 Send Start Request to HAL
29027 -------------------------------------------------------------------------*/
29028 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29029 wdiVHTOpModeCb,
29030 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29031
29032}
29033
29034WDI_Status
29035WDI_UpdateVHTOpModeReq
29036(
29037 WDI_UpdateVHTOpMode *pData,
29038 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29039 void* pUserData
29040)
29041{
29042 WDI_EventInfoType wdiEventData;
29043
29044 /*------------------------------------------------------------------------
29045 Sanity Check
29046 ------------------------------------------------------------------------*/
29047 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29048 {
29049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29050 "WDI API call before module is initialized - Fail request");
29051
29052 return WDI_STATUS_E_NOT_ALLOWED;
29053 }
29054
29055 /*------------------------------------------------------------------------
29056 Fill in Event data and post to the Main FSM
29057 ------------------------------------------------------------------------*/
29058 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29059 wdiEventData.pEventData = pData;
29060 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29061 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29062 wdiEventData.pUserData = pUserData;
29063
29064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029065 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029066
29067 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29068
29069}
29070#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029071
29072/**
29073 @brief WDI_TransportChannelDebug -
29074 Display DXE Channel debugging information
29075 User may request to display DXE channel snapshot
29076 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029077
Jeff Johnsonb88db982012-12-10 13:34:59 -080029078 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029079 @param debugFlags : Enable stall detect features
29080 defined by WPAL_DeviceDebugFlags
29081 These features may effect
29082 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029083 @see
29084 @return none
29085*/
29086void WDI_TransportChannelDebug
29087(
29088 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029089 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029090)
29091{
Mihir Shete40a55652014-03-02 14:14:47 +053029092 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029093 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029094}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029095/**
29096 @brief WDI_SsrTimerCB
29097 Callback function for SSR timer, if this is called then the graceful
29098 shutdown for Riva did not happen.
29099
29100 @param pUserData : user data to timer
29101
29102 @see
29103 @return none
29104*/
29105void
29106WDI_SsrTimerCB
29107(
29108 void *pUserData
29109)
29110{
29111 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29113
29114 if (NULL == pWDICtx )
29115 {
29116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029117 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029118 WDI_ASSERT(0);
29119 return;
29120 }
29121 wpalRivaSubystemRestart();
29122
29123 return;
29124
29125}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029126
29127/**
29128 @brief WDI_SetEnableSSR -
29129 This API is called to enable/disable SSR on WDI timeout.
29130
29131 @param enableSSR : enable/disable SSR
29132
29133 @see
29134 @return none
29135*/
29136void WDI_SetEnableSSR(wpt_boolean enableSSR)
29137{
29138 gWDICb.bEnableSSR = enableSSR;
29139}
Leo Chang9056f462013-08-01 19:21:11 -070029140
29141
29142#ifdef FEATURE_WLAN_LPHB
29143/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029144 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029145 This function will be invoked when FW detects low power
29146 heart beat failure
29147
29148 @param pWDICtx : wdi context
29149 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029150 @see
29151 @return Result of the function call
29152*/
29153WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029154WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029155(
29156 WDI_ControlBlockType* pWDICtx,
29157 WDI_EventInfoType* pEventData
29158)
29159{
29160 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029161 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29163
29164 /*-------------------------------------------------------------------------
29165 Sanity check
29166 -------------------------------------------------------------------------*/
29167 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29168 (NULL == pEventData->pEventData))
29169 {
29170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29171 "%s: Invalid parameters", __func__);
29172 WDI_ASSERT(0);
29173 return WDI_STATUS_E_FAILURE;
29174 }
29175
29176 /*-------------------------------------------------------------------------
29177 Extract indication and send it to UMAC
29178 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029179 wpalMemoryCopy(&lphbIndicationParam,
29180 pEventData->pEventData,
29181 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029182
Leo Changd9df8aa2013-09-26 13:32:26 -070029183 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029184 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029185 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029186 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029187 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029188 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029189 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029190 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029191 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029192 /*Notify UMAC*/
29193 if (pWDICtx->wdiLowLevelIndCB)
29194 {
29195 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29196 }
29197
29198 return WDI_STATUS_SUCCESS;
29199}
29200
29201/**
29202 @brief WDI_ProcessLphbCfgRsp -
29203 LPHB configuration response from FW
29204
29205 @param pWDICtx : wdi context
29206 pEventData : indication data
29207
29208 @see
29209 @return Result of the function call
29210*/
29211WDI_Status WDI_ProcessLphbCfgRsp
29212(
29213 WDI_ControlBlockType* pWDICtx,
29214 WDI_EventInfoType* pEventData
29215)
29216{
29217 WDI_Status wdiStatus;
29218 eHalStatus halStatus;
29219 WDI_LphbCfgCb wdiLphbCfgCb;
29220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29221
29222 /*-------------------------------------------------------------------------
29223 Sanity check
29224 -------------------------------------------------------------------------*/
29225 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29226 (NULL == pEventData->pEventData))
29227 {
29228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29229 "%s: Invalid parameters", __func__);
29230 WDI_ASSERT(0);
29231 return WDI_STATUS_E_FAILURE;
29232 }
29233
29234 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29235
29236 /*-------------------------------------------------------------------------
29237 Extract response and send it to UMAC
29238 -------------------------------------------------------------------------*/
29239 halStatus = *((eHalStatus*)pEventData->pEventData);
29240 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29241
29242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29243 "LPHB Cfg Rsp Return status %d", wdiStatus);
29244 /*Notify UMAC*/
29245 if (NULL != wdiLphbCfgCb)
29246 {
29247 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29248 }
29249
29250 return WDI_STATUS_SUCCESS;
29251}
29252
29253/**
29254 @brief WDI_ProcessLPHBConfReq -
29255 LPHB configuration request to FW
29256
29257 @param pWDICtx : wdi context
29258 pEventData : indication data
29259
29260 @see
29261 @return none
29262*/
29263WDI_Status WDI_ProcessLPHBConfReq
29264(
29265 WDI_ControlBlockType* pWDICtx,
29266 WDI_EventInfoType* pEventData
29267)
29268{
29269 WDI_LPHBReq *pLphbReqParams;
29270 WDI_Status wdiStatus;
29271 wpt_uint8* pSendBuffer = NULL;
29272 wpt_uint16 usDataOffset = 0;
29273 wpt_uint16 usSendSize = 0;
29274 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29276
29277 /*-------------------------------------------------------------------------
29278 Sanity check
29279 -------------------------------------------------------------------------*/
29280 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29281 {
29282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29283 "%s: Invalid parameters in Suspend ind",__func__);
29284 WDI_ASSERT(0);
29285 return WDI_STATUS_E_FAILURE;
29286 }
29287
29288 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29289
29290 /*-----------------------------------------------------------------------
29291 Get message buffer
29292 -----------------------------------------------------------------------*/
29293 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29294 WDI_LPHB_CFG_REQ,
29295 sizeof(tHalLowPowerHeartBeatReqMsg),
29296 &pSendBuffer, &usDataOffset, &usSendSize))||
29297 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29298 {
29299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29300 "Unable to get send buffer in LPHB Ind ");
29301 WDI_ASSERT(0);
29302 return WDI_STATUS_E_FAILURE;
29303 }
29304
29305 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29306 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29307
29308 halLphbReqRarams->lowPowerHeartBeatCmdType =
29309 (tANI_U16)(++pLphbReqParams->cmd);
29310 switch ((tANI_U16)pLphbReqParams->cmd)
29311 {
29312 case WDI_LPHB_SET_EN_PARAMS_INDID:
29313 halLphbReqRarams->sessionIdx =
29314 pLphbReqParams->params.lphbEnableReq.session;
29315 halLphbReqRarams->options.control.heartBeatEnable =
29316 pLphbReqParams->params.lphbEnableReq.enable;
29317 halLphbReqRarams->options.control.heartBeatType =
29318 pLphbReqParams->params.lphbEnableReq.item;
29319 break;
29320
29321 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29322 halLphbReqRarams->sessionIdx =
29323 pLphbReqParams->params.lphbTcpParamReq.session;
29324 halLphbReqRarams->options.tcpParams.timeOutSec =
29325 pLphbReqParams->params.lphbTcpParamReq.timeout;
29326 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29327 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29328 sizeof(v_U32_t));
29329 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29330 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29331 sizeof(v_U32_t));
29332
29333 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29334 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29335 WDI_MAC_ADDR_LEN);
29336
29337 halLphbReqRarams->options.tcpParams.hostPort =
29338 pLphbReqParams->params.lphbTcpParamReq.src_port;
29339 halLphbReqRarams->options.tcpParams.destPort =
29340 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029341 halLphbReqRarams->options.tcpParams.timePeriodSec =
29342 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29343 halLphbReqRarams->options.tcpParams.tcpSn =
29344 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029345 break;
29346
29347 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29348 halLphbReqRarams->sessionIdx =
29349 pLphbReqParams->params.lphbTcpFilterReq.session;
29350 halLphbReqRarams->options.tcpUdpFilter.offset =
29351 pLphbReqParams->params.lphbTcpFilterReq.offset;
29352 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29353 pLphbReqParams->params.lphbTcpFilterReq.length;
29354 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29355 pLphbReqParams->params.lphbTcpFilterReq.filter,
29356 WDI_LPHB_FILTER_LEN);
29357 break;
29358
29359 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29360 halLphbReqRarams->sessionIdx =
29361 pLphbReqParams->params.lphbUdpParamReq.session;
29362 halLphbReqRarams->options.udpParams.timeOutSec =
29363 pLphbReqParams->params.lphbUdpParamReq.timeout;
29364 halLphbReqRarams->options.udpParams.timePeriodSec =
29365 pLphbReqParams->params.lphbUdpParamReq.interval;
29366 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29367 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29368 sizeof(v_U32_t));
29369 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29370 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29371 sizeof(v_U32_t));
29372
29373 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29374 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29375 WDI_MAC_ADDR_LEN);
29376
29377 halLphbReqRarams->options.udpParams.hostPort =
29378 pLphbReqParams->params.lphbUdpParamReq.src_port;
29379 halLphbReqRarams->options.udpParams.destPort =
29380 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29381 break;
29382
29383 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29384 halLphbReqRarams->sessionIdx =
29385 pLphbReqParams->params.lphbUdpFilterReq.session;
29386 halLphbReqRarams->options.tcpUdpFilter.offset =
29387 pLphbReqParams->params.lphbUdpFilterReq.offset;
29388 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29389 pLphbReqParams->params.lphbUdpFilterReq.length;
29390 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29391 pLphbReqParams->params.lphbUdpFilterReq.filter,
29392 WDI_LPHB_FILTER_LEN);
29393 break;
29394
29395 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29396 /* NA */
29397 break;
29398
29399 default:
29400 break;
29401 }
29402
29403 /*-------------------------------------------------------------------------
29404 Send Suspend Request to HAL
29405 -------------------------------------------------------------------------*/
29406 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29407 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29408
29409 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29410 usSendSize, pWDICtx->pfncRspCB,
29411 pWDICtx->pReqStatusUserData,
29412 WDI_LPHB_CFG_RESP);
29413
29414 return wdiStatus;
29415}
29416
29417/**
29418 @brief WDI_LPHBConfReq -
29419 LPHB configuration request API
29420
29421 @param lphbconfParam : configuration parameter
29422 usrData : client context
29423 lphbCfgCb : callback function pointer
29424
29425 @see
29426 @return Success or fail status code
29427*/
29428WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29429 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29430{
29431 WDI_EventInfoType wdiEventData;
29432
29433 /*------------------------------------------------------------------------
29434 Sanity Check
29435 ------------------------------------------------------------------------*/
29436 if (eWLAN_PAL_FALSE == gWDIInitialized)
29437 {
29438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29439 "WDI API call before module is initialized - Fail request");
29440
29441 return WDI_STATUS_E_NOT_ALLOWED;
29442 }
29443
29444 /*------------------------------------------------------------------------
29445 Fill in Event data and post to the Main FSM
29446 ------------------------------------------------------------------------*/
29447 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29448 wdiEventData.pEventData = lphbconfParam;
29449 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29450 wdiEventData.pCBfnc = lphbCfgCb;
29451 wdiEventData.pUserData = usrData;
29452
29453 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29454}
29455#endif /* FEATURE_WLAN_LPHB */
29456
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029457/**
29458 @brief WDI_ProcessIbssPeerInactivityInd
29459 Process peer inactivity indication coming from HAL
29460
29461 @param pWDICtx: pointer to the WLAN DAL context
29462 pEventData: pointer to the event information structure
29463 @see
29464 @return Result of the function call
29465*/
29466WDI_Status
29467WDI_ProcessIbssPeerInactivityInd
29468(
29469 WDI_ControlBlockType* pWDICtx,
29470 WDI_EventInfoType* pEventData
29471)
29472{
29473 WDI_LowLevelIndType wdiInd;
29474 tIbssPeerInactivityIndMsg halIbssIndMsg;
29475
29476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29477
29478 /*-------------------------------------------------------------------------
29479 Sanity check
29480 -------------------------------------------------------------------------*/
29481 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29482 ( NULL == pEventData->pEventData ))
29483 {
29484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29485 "%s: Invalid parameters", __func__);
29486 WDI_ASSERT( 0 );
29487 return WDI_STATUS_E_FAILURE;
29488 }
29489
29490 /*-------------------------------------------------------------------------
29491 Extract indication and send it to UMAC
29492 -------------------------------------------------------------------------*/
29493 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
29494 pEventData->pEventData,
29495 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
29496
29497 /*Fill in the indication parameters*/
29498 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
29499
29500 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
29501 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
29502
29503 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
29504 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
29505
29506 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
29507 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
29508 sizeof(tSirMacAddr));
29509
29510 /*Notify UMAC*/
29511 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29512
29513 return WDI_STATUS_SUCCESS;
29514
29515} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053029516
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029517/**
29518*@brief WDI_RateUpdateInd will be called when the upper MAC
29519 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053029520
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029521
29522 @param wdiRateUpdateIndParams:
29523
29524
29525 @see
29526 @return Result of the function call
29527*/
29528WDI_Status
29529WDI_RateUpdateInd
29530(
29531 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
29532)
29533{
29534 WDI_EventInfoType wdiEventData;
29535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29536
29537 /*------------------------------------------------------------------------
29538 Sanity Check
29539 ------------------------------------------------------------------------*/
29540 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29541 {
29542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29543 "WDI API call before module is initialized - Fail request");
29544
29545 return WDI_STATUS_E_NOT_ALLOWED;
29546 }
29547
29548 /*------------------------------------------------------------------------
29549 Fill in Event data and post to the Main FSM
29550 ------------------------------------------------------------------------*/
29551 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
29552 wdiEventData.pEventData = wdiRateUpdateIndParams;
29553 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
29554 wdiEventData.pCBfnc = NULL;
29555 wdiEventData.pUserData = NULL;
29556
29557 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29558
29559}/* WDI_RateUpdateInd */
29560
29561/**
29562 @brief Process Rate Update Indication and post it to HAL
29563
29564 @param pWDICtx: pointer to the WLAN DAL context
29565 pEventData: pointer to the event information structure
29566
29567 @see
29568 @return Result of the function call
29569*/
29570WDI_Status
29571WDI_ProcessRateUpdateInd
29572(
29573 WDI_ControlBlockType* pWDICtx,
29574 WDI_EventInfoType* pEventData
29575)
29576{
29577 wpt_uint8* pSendBuffer = NULL;
29578 wpt_uint16 usDataOffset = 0;
29579 wpt_uint16 usSendSize = 0;
29580 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
29581 tHalRateUpdateInd *pRateUpdateInd;
29582 WDI_Status wdiStatus;
29583
29584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29585
29586 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29587 "%s", __func__);
29588
29589 /*-------------------------------------------------------------------------
29590 Sanity check
29591 -------------------------------------------------------------------------*/
29592 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29593 {
29594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29595 "%s: Invalid parameters", __func__);
29596 WDI_ASSERT(0);
29597 return WDI_STATUS_E_FAILURE;
29598 }
29599 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
29600 /*-----------------------------------------------------------------------
29601 Get message buffer
29602 -----------------------------------------------------------------------*/
29603
29604 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29605 WDI_RATE_UPDATE_IND,
29606 sizeof(tHalRateUpdateParams),
29607 &pSendBuffer, &usDataOffset, &usSendSize))||
29608 ( usSendSize < (usDataOffset +
29609 sizeof(tHalRateUpdateParams) )))
29610 {
29611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29612 "Unable to get send buffer in Rate Update Indication %p ",
29613 pEventData);
29614 WDI_ASSERT(0);
29615 return WDI_STATUS_E_FAILURE;
29616 }
29617
29618 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
29619
29620 /* Copy the bssid */
29621 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
29622 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
29623
29624 /* Copy the tx flags */
29625 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
29626 pwdiRateUpdateInd->ucastDataRateTxFlag;
29627 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
29628 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
29629 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
29630 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
29631 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
29632 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
29633
29634 /* Copy the tx rates */
29635 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
29636 pwdiRateUpdateInd->ucastDataRate;
29637 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
29638 pwdiRateUpdateInd->reliableMcastDataRate;
29639 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
29640 pwdiRateUpdateInd->mcastDataRate24GHz;
29641 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
29642 pwdiRateUpdateInd->mcastDataRate5GHz;
29643
29644 /*-------------------------------------------------------------------------
29645 Send Rate Update Indication to HAL
29646 -------------------------------------------------------------------------*/
29647 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
29648 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
29649
29650 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
29651
29652 return (wdiStatus != WDI_STATUS_SUCCESS) ?
29653 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
29654
29655} /* WDI_ProcessRateUpdateInd */
29656
29657#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053029658/**
29659 @brief Process stop batch indication from WDA
29660
29661 @param pWDICtx: pointer to the WLAN DAL context
29662 pEventData: pointer to the event information structure
29663
29664 @see
29665 @return Result of the function call
29666*/
29667WDI_Status
29668WDI_ProcessStopBatchScanInd
29669(
29670 WDI_ControlBlockType* pWDICtx,
29671 WDI_EventInfoType* pEventData
29672)
29673{
29674 wpt_uint8* pSendBuffer = NULL;
29675 wpt_uint16 usDataOffset = 0;
29676 wpt_uint16 usSendSize = 0;
29677 WDI_Status wdiStatus;
29678 tHalBatchScanStopIndParam *pHalInd = NULL;
29679 WDI_StopBatchScanIndType *pWdiInd = NULL;
29680
29681
29682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29683
29684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29685 "%s", __func__);
29686
29687 /*-------------------------------------------------------------------------
29688 Sanity check
29689 -------------------------------------------------------------------------*/
29690
29691 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29692 {
29693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29694 "%s: Invalid parameters", __func__);
29695 WDI_ASSERT(0);
29696 return WDI_STATUS_E_FAILURE;
29697 }
29698 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
29699 /*-----------------------------------------------------------------------
29700 Get message buffer
29701 -----------------------------------------------------------------------*/
29702
29703 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29704 WDI_STOP_BATCH_SCAN_IND,
29705 sizeof(tHalBatchScanStopIndParam),
29706 &pSendBuffer, &usDataOffset, &usSendSize))||
29707 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
29708 {
29709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29710 "Unable to get send buffer in stop batch scan ind %p ",
29711 pEventData);
29712 WDI_ASSERT(0);
29713 return WDI_STATUS_E_FAILURE;
29714 }
29715
29716 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
29717 pHalInd->param = pWdiInd->param;
29718
29719 pWDICtx->pReqStatusUserData = NULL;
29720 pWDICtx->pfncRspCB = NULL;
29721 /*-------------------------------------------------------------------------
29722 Send Stop batch scan indication to HAL
29723 -------------------------------------------------------------------------*/
29724 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29725 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29726}
29727
29728/**
29729 @brief This API is called to trigger batch scan results from FW
29730
29731 @param pWDICtx: pointer to the WLAN DAL context
29732 pEventData: pointer to the event information structure
29733
29734 @see
29735 @return Result of the function call
29736*/
29737WDI_Status
29738WDI_ProcessTriggerBatchScanResultInd
29739(
29740 WDI_ControlBlockType* pWDICtx,
29741 WDI_EventInfoType* pEventData
29742)
29743{
29744 WDI_Status wdiStatus;
29745 wpt_uint8* pSendBuffer = NULL;
29746 wpt_uint16 usDataOffset = 0;
29747 wpt_uint16 usSendSize = 0;
29748 tHalBatchScanTriggerResultParam *pHalInd = NULL;
29749 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
29750
29751
29752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29753
29754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29755 "%s", __func__);
29756
29757 /*-------------------------------------------------------------------------
29758 Sanity check
29759 -------------------------------------------------------------------------*/
29760
29761 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29762 {
29763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29764 "%s: Invalid parameters", __func__);
29765 WDI_ASSERT(0);
29766 return WDI_STATUS_E_FAILURE;
29767 }
29768 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
29769 /*-----------------------------------------------------------------------
29770 Get message buffer
29771 -----------------------------------------------------------------------*/
29772
29773 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29774 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
29775 sizeof(tHalBatchScanTriggerResultParam),
29776 &pSendBuffer, &usDataOffset, &usSendSize))||
29777 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
29778 {
29779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29780 "Unable to get send buffer in stop batch scan ind %p ",
29781 pEventData);
29782 WDI_ASSERT(0);
29783 return WDI_STATUS_E_FAILURE;
29784 }
29785
29786 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
29787 pHalInd->param = pWdiInd->param;
29788
29789 pWDICtx->pReqStatusUserData = NULL;
29790 pWDICtx->pfncRspCB = NULL;
29791 /*-------------------------------------------------------------------------
29792 Send trigger batch scan result indication to HAL
29793 -------------------------------------------------------------------------*/
29794 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29795 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29796}
29797
29798
29799/**
29800 @brief Process set batch scan response from FW
29801
29802 @param pWDICtx: pointer to the WLAN DAL context
29803 pEventData: pointer to the event information structure
29804
29805 @see
29806 @return Result of the function call
29807*/
29808WDI_Status
29809WDI_ProcessSetBatchScanRsp
29810(
29811 WDI_ControlBlockType* pWDICtx,
29812 WDI_EventInfoType* pEventData
29813)
29814{
29815 WDI_SetBatchScanCb wdiSetBatchScanCb;
29816 WDI_SetBatchScanRspType *pSetBatchScanRsp;
29817
29818 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
29819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29820
29821 /*sanity check*/
29822 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29823 ( NULL == pEventData->pEventData))
29824 {
29825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29826 "%s: Invalid parameters", __func__);
29827 WDI_ASSERT(0);
29828 return WDI_STATUS_E_FAILURE;
29829 }
29830
29831 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
29832 if ( NULL == wdiSetBatchScanCb)
29833 {
29834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29835 "%s: call back function is NULL", __func__);
29836 WDI_ASSERT(0);
29837 return WDI_STATUS_E_FAILURE;
29838 }
29839
29840 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
29841
29842 if (NULL == pSetBatchScanRsp)
29843 {
29844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029845 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053029846 pWDICtx, pEventData, pEventData->pEventData);
29847 WDI_ASSERT(0);
29848 return WDI_STATUS_E_FAILURE;
29849 }
29850
Sunil Duttbd736ed2014-05-26 21:19:41 +053029851 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029852 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
29853
29854 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
29855
Sunil Duttbd736ed2014-05-26 21:19:41 +053029856 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029857 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
29858
29859 wpalMemoryFree(pSetBatchScanRsp);
29860
29861 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053029862}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053029863
29864/**
29865 @brief Process batch scan result indication from FW
29866
29867 @param pWDICtx: pointer to the WLAN DAL context
29868 pEventData: pointer to the event information structure
29869
29870 @see
29871 @return Result of the function call
29872*/
29873WDI_Status
29874WDI_ProcessBatchScanResultInd
29875(
29876 WDI_ControlBlockType* pWDICtx,
29877 WDI_EventInfoType* pEventData
29878)
29879{
29880 void *pBatchScanResultInd;
29881 WDI_LowLevelIndType wdiInd;
29882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29883
Sunil Duttbd736ed2014-05-26 21:19:41 +053029884 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053029885 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29886 ( NULL == pEventData->pEventData))
29887 {
29888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29889 "%s: Invalid parameters", __func__);
29890 WDI_ASSERT(0);
29891 return WDI_STATUS_E_FAILURE;
29892 }
29893
Sunil Duttbd736ed2014-05-26 21:19:41 +053029894 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029895 pBatchScanResultInd = (void *)pEventData->pEventData;
29896
Sunil Duttbd736ed2014-05-26 21:19:41 +053029897 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053029898 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
29899
29900 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
29901
Sunil Duttbd736ed2014-05-26 21:19:41 +053029902 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029903 if (pWDICtx->wdiLowLevelIndCB)
29904 {
29905 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29906 }
29907 else
29908 {
29909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29910 "%s: WDILowLevelIndCb is null", __func__);
29911 WDI_ASSERT(0);
29912 return WDI_STATUS_E_FAILURE;
29913 }
29914
29915 return WDI_STATUS_SUCCESS;
29916} /*End of WDI_ProcessBatchScanResultInd*/
29917
Sunil Duttbd736ed2014-05-26 21:19:41 +053029918#ifdef WLAN_FEATURE_LINK_LAYER_STATS
29919/**
29920 @brief Process Link Layer Statistics Result indication from FW
29921
29922 @param pWDICtx: pointer to the WLAN DAL context
29923 pEventData: pointer to the event information structure
29924
29925 @see
29926 @return Result of the function call
29927*/
29928WDI_Status
29929WDI_ProcessLinkLayerStatsResultsInd
29930(
29931 WDI_ControlBlockType* pWDICtx,
29932 WDI_EventInfoType* pEventData
29933)
29934{
29935 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053029936 WDI_LLstatsResultsType *halLLStatsResults;
29937 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053029938 WDI_LowLevelIndType wdiInd;
29939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29940
29941 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
29942 "%s: Event RESULTS Indication", __func__);
29943
29944 /* sanity check */
29945 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29946 ( NULL == pEventData->pEventData))
29947 {
29948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29949 "%s: Invalid parameters", __func__);
29950 WDI_ASSERT(0);
29951 return WDI_STATUS_E_FAILURE;
29952 }
29953
29954 /* extract response and send it to UMAC */
29955 pLinkLayerStatsInd = (void *)pEventData->pEventData;
29956
29957 /* Fill in the indication parameters */
29958 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
29959
Dino Mycled3d50022014-07-07 12:58:25 +053029960 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
29961 = pLinkLayerStatsInd;
29962
29963 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
29964
29965
29966 /* Need to fill in the MAC address */
29967 if ( WDI_STATUS_SUCCESS !=
29968 WDI_STATableGetStaMacAddr(pWDICtx,
29969 halLLStatsResults->iface_id,
29970 &macAddr))
29971 {
29972 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
29973 " ifaceId: %u does not exist in the WDI Station Table",
29974 halLLStatsResults->iface_id);
29975
29976 return WDI_STATUS_E_FAILURE;
29977 }
29978 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
29979 macAddr, WDI_MAC_ADDR_LEN);
29980
29981 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
29982 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
29983 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053029984
29985 /* Notify UMAC */
29986 if (pWDICtx->wdiLowLevelIndCB)
29987 {
29988 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29989 }
29990 else
29991 {
29992 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
29993 "%s: WDILowLevelIndCb is null", __func__);
29994 WDI_ASSERT(0);
29995 return WDI_STATUS_E_FAILURE;
29996 }
29997
29998 return WDI_STATUS_SUCCESS;
29999} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30000#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30001
Rajeev79dbe4c2013-10-05 11:03:42 +053030002/**
30003 @brief WDI_ProcessSetBatchScanReq -
30004 Set batch scan request to FW
30005
30006 @param pWDICtx : wdi context
30007 pEventData : indication data
30008
30009 @see
30010 @return none
30011*/
30012WDI_Status WDI_ProcessSetBatchScanReq
30013(
30014 WDI_ControlBlockType* pWDICtx,
30015 WDI_EventInfoType* pEventData
30016)
30017{
30018 WDI_SetBatchScanReqType *pWdiReq;
30019 WDI_Status wdiStatus;
30020 wpt_uint8* pSendBuffer = NULL;
30021 wpt_uint16 usDataOffset = 0;
30022 wpt_uint16 usSendSize = 0;
30023 tHalBatchScanSetParams *pHalReq;
30024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30025
30026 /*sanity check*/
30027 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30028 {
30029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30030 "%s: Invalid parameters in set batch scan request", __func__);
30031 WDI_ASSERT(0);
30032 return WDI_STATUS_E_FAILURE;
30033 }
30034
30035
30036 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30037
30038
30039 /*get message buffer*/
30040 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30041 WDI_SET_BATCH_SCAN_REQ,
30042 sizeof(tHalBatchScanSetParams),
30043 &pSendBuffer, &usDataOffset, &usSendSize))||
30044 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30045 {
30046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30047 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30048 WDI_ASSERT(0);
30049 return WDI_STATUS_E_FAILURE;
30050 }
30051
30052 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30053
30054 pHalReq->rtt = pWdiReq->rtt;
30055 pHalReq->rfBand = pWdiReq->rfBand;
30056 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30057 pHalReq->scanInterval = pWdiReq->scanFrequency;
30058 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30059
30060 /*send set batch scan request to fw*/
30061 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30062 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30063
30064 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30065 usSendSize, pWDICtx->pfncRspCB,
30066 pWDICtx->pReqStatusUserData,
30067 WDI_SET_BATCH_SCAN_RESP);
30068
30069 return wdiStatus;
30070}
30071
30072/**
30073 @brief WDI_SetBatchScanReq
30074 This API is called to set batch scan request in FW
30075
30076 @param pBatchScanReqParam : pointer to set batch scan re param
30077 usrData : Client context
30078 setBatchScanRspCb : set batch scan resp callback
30079 @see
30080 @return SUCCESS or FAIL
30081*/
30082WDI_Status WDI_SetBatchScanReq
30083(
30084 void *pBatchScanReqParam,
30085 void *usrData,
30086 WDI_SetBatchScanCb setBatchScanRspCb
30087)
30088{
30089 WDI_EventInfoType wdiEventData;
30090
30091 /*sanity check*/
30092 if (eWLAN_PAL_FALSE == gWDIInitialized)
30093 {
30094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30095 "WDI API call before module is initialized - Fail request");
30096
30097 return WDI_STATUS_E_NOT_ALLOWED;
30098 }
30099
30100 /* fill in event data and post to the main FSM */
30101 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30102 wdiEventData.pEventData = pBatchScanReqParam;
30103 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30104 wdiEventData.pCBfnc = setBatchScanRspCb;
30105 wdiEventData.pUserData = usrData;
30106
30107 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30108}
30109
30110/**
30111 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30112
30113 @param None
30114
30115 @see
30116
30117 @return Status of the request
30118*/
30119WDI_Status
30120WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30121{
30122 WDI_EventInfoType wdiEventData;
30123
30124 /*-------------------------------------------------------------------------
30125 Sanity Check
30126 ------------------------------------------------------------------------*/
30127 if (eWLAN_PAL_FALSE == gWDIInitialized)
30128 {
30129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30130 "WDI API call before module is initialized - Fail request!");
30131
30132 return WDI_STATUS_E_NOT_ALLOWED;
30133 }
30134
30135 /*-------------------------------------------------------------------------
30136 Fill in Event data and post to the Main FSM
30137 ------------------------------------------------------------------------*/
30138 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30139 wdiEventData.pEventData = pWdiReq;
30140 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30141 wdiEventData.pCBfnc = NULL;
30142 wdiEventData.pUserData = NULL;
30143
30144 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30145}
30146
30147/**
30148 @brief WDI_TriggerBatchScanResultInd
30149 This API is called to pull batch scan result from FW
30150
30151 @param pWdiReq : pointer to get batch scan ind param
30152 @see
30153 @return SUCCESS or FAIL
30154*/
30155WDI_Status WDI_TriggerBatchScanResultInd
30156(
30157 WDI_TriggerBatchScanResultIndType *pWdiReq
30158)
30159{
30160 WDI_EventInfoType wdiEventData;
30161 /*-------------------------------------------------------------------------
30162 Sanity Check
30163 ------------------------------------------------------------------------*/
30164 if (eWLAN_PAL_FALSE == gWDIInitialized)
30165 {
30166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30167 "WDI API call before module is initialized - Fail request!");
30168
30169 return WDI_STATUS_E_NOT_ALLOWED;
30170 }
30171
30172 /*-------------------------------------------------------------------------
30173 Fill in Event data and post to the Main FSM
30174 ------------------------------------------------------------------------*/
30175 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30176 wdiEventData.pEventData = pWdiReq;
30177 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30178 wdiEventData.pCBfnc = NULL;
30179 wdiEventData.pUserData = NULL;
30180
30181 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30182}
Rajeev79dbe4c2013-10-05 11:03:42 +053030183#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030184
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030185/**
30186 @brief Process Update Channel Rsp function (called when a response is
30187 being received over the bus from HAL)
30188
30189 @param pWDICtx: pointer to the WLAN DAL context
30190 pEventData: pointer to the event information structure
30191
30192 @see
30193 @return Result of the function call
30194*/
30195WDI_Status
30196WDI_ProcessUpdateChanRsp
30197(
30198 WDI_ControlBlockType* pWDICtx,
30199 WDI_EventInfoType* pEventData
30200)
30201{
30202 WDI_Status wdiStatus;
30203 eHalStatus halStatus;
30204 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30206
30207 /*-------------------------------------------------------------------------
30208 Sanity check
30209 -------------------------------------------------------------------------*/
30210 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30211 ( NULL == pEventData->pEventData))
30212 {
30213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30214 "%s: Invalid parameters", __func__);
30215 WDI_ASSERT(0);
30216 return WDI_STATUS_E_FAILURE;
30217 }
30218
30219 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30220
30221 /*-------------------------------------------------------------------------
30222 Extract response and send it to UMAC
30223 -------------------------------------------------------------------------*/
30224 halStatus = *((eHalStatus*)pEventData->pEventData);
30225 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30226
30227 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30228
30229 return WDI_STATUS_SUCCESS;
30230}/*WDI_ProcessUpdateChanRsp*/
30231
Leo Chang0b0e45a2013-12-15 15:18:55 -080030232#ifdef FEATURE_WLAN_CH_AVOID
30233/**
30234 @brief v -WDI_ProcessChAvoidInd
30235
30236
30237 @param pWDICtx : wdi context
30238 pEventData : indication data
30239 @see
30240 @return Result of the function call
30241*/
30242WDI_Status
30243WDI_ProcessChAvoidInd
30244(
30245 WDI_ControlBlockType* pWDICtx,
30246 WDI_EventInfoType* pEventData
30247)
30248{
30249 WDI_LowLevelIndType wdiInd;
30250 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30251 wpt_uint16 rangeLoop;
30252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30253
30254 /*-------------------------------------------------------------------------
30255 Sanity check
30256 -------------------------------------------------------------------------*/
30257 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30258 (NULL == pEventData->pEventData))
30259 {
30260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30261 "%s: Invalid parameters", __func__);
30262 WDI_ASSERT(0);
30263 return WDI_STATUS_E_FAILURE;
30264 }
30265
30266 /*-------------------------------------------------------------------------
30267 Extract indication and send it to UMAC
30268 -------------------------------------------------------------------------*/
30269 wpalMemoryCopy(&chAvoidIndicationParam,
30270 pEventData->pEventData,
30271 sizeof(tHalAvoidFreqRangeIndParams));
30272
30273 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30274 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30275 chAvoidIndicationParam.avoidCnt;
30276 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30277 (void *)chAvoidIndicationParam.avoidRange,
30278 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30279 sizeof(WDI_ChAvoidFreqType));
30280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30281 "%s: band count %d", __func__,
30282 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30283 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30284 {
30285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30286 "%s: srart freq %d, end freq %d", __func__,
30287 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30288 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30289 }
30290
30291 /*Notify UMAC*/
30292 if (pWDICtx->wdiLowLevelIndCB)
30293 {
30294 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30295 }
30296
30297 return WDI_STATUS_SUCCESS;
30298}
30299#endif /* FEATURE_WLAN_CH_AVOID */
30300
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030301/**
30302 @brief Process OBSS Start scan result indication
30303
30304 @param pWDICtx: pointer to the WLAN DAL context
30305 pEventData: pointer to the event information structure
30306
30307 @see
30308 @return Result of the function call
30309*/
30310WDI_Status
30311WDI_ProcessHT40OBSSScanInd
30312(
30313 WDI_ControlBlockType* pWDICtx,
30314 WDI_EventInfoType* pEventData
30315)
30316{
30317 wpt_uint8* pSendBuffer = NULL;
30318 wpt_uint16 usDataOffset = 0;
30319 wpt_uint16 usSendSize = 0;
30320 wpt_uint16 usLen = 0;
30321 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30322 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30323 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30324 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30325
30326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30327
30328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30329 "%s", __func__);
30330
30331 /*-------------------------------------------------------------------------
30332 Sanity check
30333 -------------------------------------------------------------------------*/
30334 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30335 {
30336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30337 "%s: Invalid parameters", __func__);
30338 WDI_ASSERT(0);
30339 return WDI_STATUS_E_FAILURE;
30340 }
30341 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30342
30343 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30344 /*-----------------------------------------------------------------------
30345 Get message buffer
30346 -----------------------------------------------------------------------*/
30347
30348 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30349 WDI_START_HT40_OBSS_SCAN_IND,
30350 sizeof(tHT40ObssScanIndType),
30351 &pSendBuffer, &usDataOffset, &usSendSize))||
30352 ( usSendSize < (usDataOffset + usLen )))
30353 {
30354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30355 "Unable to get send buffer in HT40 OBSS Start req %p ",
30356 pEventData);
30357 WDI_ASSERT(0);
30358 return WDI_STATUS_E_FAILURE;
30359 }
30360 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30361 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30362 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30363 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30364 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30365 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30366 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30367 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30368 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30369 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30370 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30371 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30372 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30373 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30374 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30375 pHT40ObssScanInd->OBSSScanActivityThreshold =
30376 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30377 pHT40ObssScanInd->selfStaIdx =
30378 pwdiHT40OBSSScanInd->selfStaIdx;
30379 pHT40ObssScanInd->bssIdx =
30380 pwdiHT40OBSSScanInd->bssIdx;
30381 pHT40ObssScanInd->fortyMHZIntolerent =
30382 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30383 pHT40ObssScanInd->channelCount =
30384 pwdiHT40OBSSScanInd->channelCount;
30385
30386 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30387 WDI_ROAM_SCAN_MAX_CHANNELS);
30388 pHT40ObssScanInd->ieFieldLen =
30389 pwdiHT40OBSSScanInd->ieFieldLen;
30390
30391 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30392 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30393 pWDICtx->pReqStatusUserData = NULL;
30394 pWDICtx->pfncRspCB = NULL;
30395
30396 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30397 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30398
30399 /*-------------------------------------------------------------------------
30400 Send OBSS Start Indication to HAL
30401 -------------------------------------------------------------------------*/
30402 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30403 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30404
30405} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30406
30407
30408/**
30409 @brief wdi_HT40OBSSScanInd
30410 This API is called to start OBSS scan
30411
30412 @param pWdiReq : pointer to get ind param
30413 @see
30414 @return SUCCESS or FAIL
30415*/
30416WDI_Status WDI_HT40OBSSScanInd
30417(
30418 WDI_HT40ObssScanParamsType *pWdiReq
30419)
30420{
30421 WDI_EventInfoType wdiEventData;
30422
30423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30424 "%s", __func__);
30425 /*-------------------------------------------------------------------------
30426 Sanity Check
30427 ------------------------------------------------------------------------*/
30428 if (eWLAN_PAL_FALSE == gWDIInitialized)
30429 {
30430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30431 "WDI API call before module is initialized - Fail request!");
30432
30433 return WDI_STATUS_E_NOT_ALLOWED;
30434 }
30435
30436 /*-------------------------------------------------------------------------
30437 Fill in Event data and post to the Main FSM
30438 ------------------------------------------------------------------------*/
30439 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30440 wdiEventData.pEventData = pWdiReq;
30441 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30442 wdiEventData.pCBfnc = NULL;
30443 wdiEventData.pUserData = NULL;
30444
30445
30446 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30447}
30448
30449/**
30450 @brief Process OBSS Stop scan result
30451
30452 @param pWDICtx: pointer to the WLAN DAL context
30453 pEventData: pointer to the event information structure
30454
30455 @see
30456 @return Result of the function call
30457*/
30458WDI_Status
30459WDI_ProcessHT40OBSSStopScanInd
30460(
30461 WDI_ControlBlockType* pWDICtx,
30462 WDI_EventInfoType* pEventData
30463)
30464{
30465 wpt_uint8* pSendBuffer = NULL;
30466 wpt_uint16 usDataOffset = 0;
30467 wpt_uint16 usSendSize = 0;
30468 wpt_uint16 usLen = 0;
30469 wpt_uint8 *wdiBssIdx = 0;
30470 tANI_U8 *bssIdx = 0;
30471 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30472
30473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30474
30475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30476 "%s", __func__);
30477
30478 /*-------------------------------------------------------------------------
30479 Sanity check
30480 -------------------------------------------------------------------------*/
30481 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30482 {
30483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30484 "%s: Invalid parameters", __func__);
30485 WDI_ASSERT(0);
30486 return WDI_STATUS_E_FAILURE;
30487 }
30488 bssIdx = (wpt_uint8*)pEventData->pEventData;
30489 /*-----------------------------------------------------------------------
30490 Get message buffer
30491 -----------------------------------------------------------------------*/
30492
30493 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30494 WDI_STOP_HT40_OBSS_SCAN_IND,
30495 sizeof(tANI_U8),
30496 &pSendBuffer, &usDataOffset, &usSendSize))||
30497 ( usSendSize < (usDataOffset + usLen )))
30498 {
30499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30500 "Unable to get send buffer in HT40 OBSS Start req %p ",
30501 pEventData);
30502 WDI_ASSERT(0);
30503 return WDI_STATUS_E_FAILURE;
30504 }
30505
30506 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
30507 bssIdx = wdiBssIdx;
30508
30509 pWDICtx->pReqStatusUserData = NULL;
30510 pWDICtx->pfncRspCB = NULL;
30511
30512 /*-------------------------------------------------------------------------
30513 Send DHCP Start Indication to HAL
30514 -------------------------------------------------------------------------*/
30515 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30516 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30517} /*End of WDI_ProcessHT40OBSSStopScanInd*/
30518
30519/**
30520 @brief WDI_HT40OBSSStopScanInd
30521 This API is called to start OBSS scan
30522 @param pWdiReq : pointer to get ind param
30523 @see
30524 @return SUCCESS or FAIL
30525*/
30526WDI_Status WDI_HT40OBSSStopScanInd
30527(
30528 wpt_uint8 bssIdx
30529)
30530{
30531 WDI_EventInfoType wdiEventData;
30532
30533 /*-------------------------------------------------------------------------
30534 Sanity Check
30535 ------------------------------------------------------------------------*/
30536 if (eWLAN_PAL_FALSE == gWDIInitialized)
30537 {
30538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30539 "WDI API call before module is initialized - Fail request!");
30540
30541 return WDI_STATUS_E_NOT_ALLOWED;
30542 }
30543
30544 /*-------------------------------------------------------------------------
30545 Fill in Event data and post to the Main FSM
30546 ------------------------------------------------------------------------*/
30547 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
30548 wdiEventData.pEventData = &bssIdx;
30549 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
30550 wdiEventData.pCBfnc = NULL;
30551 wdiEventData.pUserData = NULL;
30552
30553 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30554}
30555
c_hpothu86041002014-04-14 19:06:51 +053030556WDI_Status
30557WDI_printRegInfo
30558(
30559 WDI_ControlBlockType* pWDICtx,
30560 WDI_EventInfoType* pEventData
30561)
30562{
30563 tHalRegDebugInfo *pRegTable;
30564 tHalRegDebugInfoParams *pRegParams;
30565 uint32 cnt=0;
30566
30567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30568 "%s: ", __func__);
30569 /*-------------------------------------------------------------------------
30570 Sanity check
30571 -------------------------------------------------------------------------*/
30572 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30573 ( NULL == pEventData->pEventData))
30574 {
30575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30576 "%s: Invalid parameters", __func__);
30577 WDI_ASSERT(0);
30578 return WDI_STATUS_E_FAILURE;
30579 }
30580
30581 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
30582
30583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30584 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
30585 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
30586
30587 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
30588
30589 if (pRegParams->regCount <= 0)
30590 {
30591 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30592 "%s incorrect parameters passed", __func__);
30593 return WDI_STATUS_E_FAILURE;
30594 }
30595
30596 while(pRegParams->regCount--)
30597 {
30598 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30599 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
30600 cnt++;
30601 }
30602
30603 return WDI_STATUS_SUCCESS;
30604}
c_hpothu92367912014-05-01 15:18:17 +053030605
30606/*
30607 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
30608 * send the response to PE with beacon miss count
30609 * received from WDI.
30610 */
30611WDI_Status
30612WDI_ProcessGetBcnMissRateRsp
30613(
30614 WDI_ControlBlockType* pWDICtx,
30615 WDI_EventInfoType* pEventData
30616)
30617{
30618 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
30619 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
30620
30621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30622 "In %s",__func__);
30623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30624
30625 /*-------------------------------------------------------------------------
30626 Sanity check
30627 -------------------------------------------------------------------------*/
30628 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30629 ( NULL == pEventData->pEventData))
30630 {
30631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30632 "%s: Invalid parameters", __func__);
30633 WDI_ASSERT(0);
30634 return WDI_STATUS_E_FAILURE;
30635 }
30636
30637 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
30638 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
30639
30640 /*Notify UMAC*/
30641 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
30642 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
30643 return WDI_STATUS_SUCCESS;
30644}
30645
30646/*
30647 * FUNCTION: WDI_ProcessGetBcnMissRateReq
30648 * Request to WDI to get missed beacon rate.
30649 */
30650WDI_Status
30651WDI_ProcessGetBcnMissRateReq
30652(
30653 WDI_ControlBlockType* pWDICtx,
30654 WDI_EventInfoType* pEventData
30655)
30656{
30657 wpt_uint8* pSendBuffer = NULL;
30658 wpt_uint16 usDataOffset = 0;
30659 wpt_uint16 usSendSize = 0;
30660 wpt_uint8 ucCurrentBSSSesIdx = 0;
30661 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053030662 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
30663 tHalBcnMissRateReqParams halBcnMissRateReq;
30664
30665/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30666
30667 /*-------------------------------------------------------------------------
30668 Sanity check
30669 -------------------------------------------------------------------------*/
30670 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
30671 ( NULL == pEventData->pCBfnc ) )
30672 {
30673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30674 "%s: Invalid parameters", __func__);
30675 WDI_ASSERT(0);
30676 return WDI_STATUS_E_FAILURE;
30677 }
30678
30679 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
30680
30681 wpalMutexAcquire(&pWDICtx->wptMutex);
30682
30683 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
30684 pEventData->pEventData, &pBSSSes);
30685 if ( NULL == pBSSSes )
30686 {
30687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30688 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053030689 MAC_ADDRESS_STR, __func__,
30690 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053030691 wpalMutexRelease(&pWDICtx->wptMutex);
30692 return WDI_STATUS_E_NOT_ALLOWED;
30693 }
30694 wpalMutexRelease(&pWDICtx->wptMutex);
30695
30696 /*-----------------------------------------------------------------------
30697 Get message buffer
30698 -----------------------------------------------------------------------*/
30699 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30700 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
30701 sizeof(tHalBcnMissRateReqParams),
30702 &pSendBuffer, &usDataOffset, &usSendSize)) ||
30703 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
30704 {
30705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30706 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
30707 pEventData);
30708 WDI_ASSERT(0);
30709 return WDI_STATUS_E_FAILURE;
30710 }
30711
30712 pWDICtx->wdiReqStatusCB = NULL;
30713 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30714
30715 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
30716
30717 wpalMemoryCopy( pSendBuffer+usDataOffset,
30718 &halBcnMissRateReq,
30719 sizeof(tHalBcnMissRateReqParams));
30720 /*-------------------------------------------------------------------------
30721 Send Get STA Request to HAL
30722 -------------------------------------------------------------------------*/
30723 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
30724 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
30725}
30726
30727/**
30728 @brief WDI_GetBcnMissRate
30729
30730 @param pUserData: user data will be passed back with the
30731 callback
30732 WDI_GetBcnMissRateCb: callback for passing back the response
30733 of the get stats operation received from the device
30734 bssid: bssid, to send bssIdx to FW
30735
30736 @return SUCCESS or FAIL
30737*/
30738WDI_Status WDI_GetBcnMissRate( void *pUserData,
30739 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
30740 tANI_U8 *bssid )
30741{
30742 WDI_EventInfoType wdiEventData;
30743
30744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30745
30746 /*------------------------------------------------------------------------
30747 Sanity Check
30748 ------------------------------------------------------------------------*/
30749 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30750 {
30751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30752 "WDI API call before module is initialized - Fail request");
30753
30754 return WDI_STATUS_E_NOT_ALLOWED;
30755 }
30756
30757 /*------------------------------------------------------------------------
30758 Fill in Event data and post to the Main FSM
30759 ------------------------------------------------------------------------*/
30760 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
30761 wdiEventData.pEventData = bssid;
30762 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
30763 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
30764 wdiEventData.pUserData = pUserData;
30765
30766 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30767}
Sunil Duttbd736ed2014-05-26 21:19:41 +053030768#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30769
30770/**
30771 @brief WDI_LLStatsSetReq
30772 This API is called to set link layer stats request in FW
30773
30774 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
30775 wdiLLStatsSetRspCb : set link layer stats resp callback
30776 usrData : Client context
30777 @see
30778 @return SUCCESS or FAIL
30779*/
30780WDI_Status
30781WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
30782 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
30783 void* pUserData)
30784{
30785 WDI_EventInfoType wdiEventData;
30786
30787 /*------------------------------------------------------------------------
30788 Sanity Check
30789 ------------------------------------------------------------------------*/
30790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30791 {
30792 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30793 "WDI API call before module is initialized - Fail request");
30794
30795 return WDI_STATUS_E_NOT_ALLOWED;
30796 }
30797
30798 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
30799 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
30800 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
30801 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
30802 wdiEventData.pUserData = pUserData;
30803
30804 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30805}
30806
30807/**
30808 @brief WDI_ProcessLLStatsSetReq -
30809 Set Link Layer Stats request to FW
30810
30811 @param pWDICtx : wdi context
30812 pEventData : indication data
30813
30814 @see
30815 @return none
30816*/
30817WDI_Status
30818WDI_ProcessLLStatsSetReq
30819(
30820 WDI_ControlBlockType* pWDICtx,
30821 WDI_EventInfoType* pEventData
30822)
30823{
30824 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
30825 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
30826 wpt_uint8* pSendBuffer = NULL;
30827 wpt_uint16 usSendSize = 0;
30828 wpt_uint16 usDataOffset = 0;
30829 tHalMacLlSetStatsReqParams halLLStatsSetParams;
30830
30831 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30832 ( NULL == pEventData->pCBfnc ))
30833 {
30834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30835 "%s: Invalid parameters", __func__);
30836 WDI_ASSERT(0);
30837 return WDI_STATUS_E_FAILURE;
30838 }
30839
30840 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
30841 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
30842
30843 /*-----------------------------------------------------------------------
30844 Get message buffer
30845 ! TO DO : proper conversion into the HAL Message Request Format
30846 -----------------------------------------------------------------------*/
30847 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30848 pWDICtx,
30849 WDI_LL_STATS_SET_REQ,
30850 sizeof(tHalMacLlSetStatsReqParams),
30851 &pSendBuffer, &usDataOffset,
30852 &usSendSize))||
30853 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
30854 {
30855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30856 "Unable to get send buffer in %s %p %p %p", __func__,
30857 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
30858 WDI_ASSERT(0);
30859 return WDI_STATUS_E_FAILURE;
30860 }
30861
30862
Dino Mycled3d50022014-07-07 12:58:25 +053030863 /* Need to fill in the self STA Index */
30864 if ( WDI_STATUS_SUCCESS !=
30865 WDI_STATableFindStaidByAddr(pWDICtx,
30866 pwdiLLStatsSetReqParams->macAddr,
30867 &halLLStatsSetParams.sta_id))
30868 {
30869 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30870 MAC_ADDRESS_STR
30871 ": This station does not exist in the WDI Station Table",
30872 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
30873
30874 wpalMemoryFree(pSendBuffer);
30875 return WDI_STATUS_E_FAILURE;
30876 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053030877
30878 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030879 halLLStatsSetParams.mpdu_size_threshold =
30880 pwdiLLStatsSetReqParams->mpduSizeThreshold;
30881 halLLStatsSetParams.aggressive_statistics_gathering =
30882 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
30883
30884 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30885 " halLLStatsSetParams.req_id = %u",
30886 halLLStatsSetParams.req_id);
30887 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30888 " halLLStatsSetParams.sta_id = %u",
30889 halLLStatsSetParams.sta_id);
30890 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30891 " halLLStatsSetParams.mpdu_size_threshold = %u",
30892 halLLStatsSetParams.mpdu_size_threshold);
30893 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30894 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
30895 halLLStatsSetParams.aggressive_statistics_gathering);
30896
30897 wpalMemoryCopy(pSendBuffer+usDataOffset,
30898 &halLLStatsSetParams,
30899 sizeof(halLLStatsSetParams));
30900
30901 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30902
30903 /*-------------------------------------------------------------------------
30904 Send Clear Link Layer Stats Request to HAL
30905 -------------------------------------------------------------------------*/
30906 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30907 wdiLLStatsSetCb, pEventData->pUserData,
30908 WDI_LL_STATS_SET_RSP);
30909}
30910
30911/**
30912 @brief WDI_LLStatsGetReq
30913 This API is called to get link layer stats request in FW
30914
30915 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
30916 wdiLLStatsGetRspCb : get link layer stats resp callback
30917 usrData : Client context
30918 @see
30919 @return SUCCESS or FAIL
30920*/
30921WDI_Status
30922WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
30923 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
30924 void* pUserData)
30925{
30926 WDI_EventInfoType wdiEventData;
30927
30928 /*------------------------------------------------------------------------
30929 Sanity Check
30930 ------------------------------------------------------------------------*/
30931 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30932 {
30933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30934 "WDI API call before module is initialized - Fail request");
30935
30936 return WDI_STATUS_E_NOT_ALLOWED;
30937 }
30938
30939 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
30940 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
30941 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
30942 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
30943 wdiEventData.pUserData = pUserData;
30944
30945 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30946}
30947
30948/**
30949 @brief WDI_ProcessLLStatsGetReq -
30950 Get Link Layer Stats request to FW
30951
30952 @param pWDICtx : wdi context
30953 pEventData : indication data
30954
30955 @see
30956 @return none
30957*/
30958WDI_Status
30959WDI_ProcessLLStatsGetReq
30960(
30961 WDI_ControlBlockType* pWDICtx,
30962 WDI_EventInfoType* pEventData
30963)
30964{
30965 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
30966 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
30967 wpt_uint8* pSendBuffer = NULL;
30968 wpt_uint16 usSendSize = 0;
30969 wpt_uint16 usDataOffset = 0;
30970 tHalMacLlGetStatsReqParams halLLStatsGetParams;
30971
30972 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30973 ( NULL == pEventData->pCBfnc ))
30974 {
30975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30976 "%s: Invalid parameters", __func__);
30977 WDI_ASSERT(0);
30978 return WDI_STATUS_E_FAILURE;
30979 }
30980
30981 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
30982 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
30983
30984 /*-----------------------------------------------------------------------
30985 Get message buffer
30986 ! TO DO : proper conversion into the HAL Message Request Format
30987 -----------------------------------------------------------------------*/
30988 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30989 pWDICtx,
30990 WDI_LL_STATS_GET_REQ,
30991 sizeof(tHalMacLlGetStatsReqParams),
30992 &pSendBuffer, &usDataOffset,
30993 &usSendSize))||
30994 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
30995 {
30996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30997 "Unable to get send buffer in %s %p %p %p", __func__,
30998 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
30999 WDI_ASSERT(0);
31000 return WDI_STATUS_E_FAILURE;
31001 }
Dino Mycled3d50022014-07-07 12:58:25 +053031002 /* Need to fill in the self STA Index */
31003 if ( WDI_STATUS_SUCCESS !=
31004 WDI_STATableFindStaidByAddr(pWDICtx,
31005 pwdiLLStatsGetReqParams->macAddr,
31006 &halLLStatsGetParams.sta_id))
31007 {
31008 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31009 MAC_ADDRESS_STR
31010 ": This station does not exist in the WDI Station Table",
31011 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31012
31013 wpalMemoryFree(pSendBuffer);
31014 return WDI_STATUS_E_FAILURE;
31015 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031016
31017 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031018 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31019
31020 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31021 " halLLStatsGetParams.req_id = %u",
31022 halLLStatsGetParams.req_id);
31023 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31024 " halLLStatsGetParams.staId = %u",
31025 halLLStatsGetParams.sta_id);
31026 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31027 " halLLStatsGetParams.Mask = %u",
31028 halLLStatsGetParams.param_id_mask);
31029
31030 wpalMemoryCopy(pSendBuffer+usDataOffset,
31031 &halLLStatsGetParams,
31032 sizeof(halLLStatsGetParams));
31033
31034 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31035
31036 /*-------------------------------------------------------------------------
31037 Send Clear Link Layer Stats Request to HAL
31038 -------------------------------------------------------------------------*/
31039 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31040 wdiLLStatsGetCb, pEventData->pUserData,
31041 WDI_LL_STATS_GET_RSP);
31042}
31043
31044/**
31045 @brief WDI_LLStatsClearReq
31046 This API is called to clear link layer stats request in FW
31047
31048 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
31049 wdiLLStatsSetRspCb : clear link layer stats resp callback
31050 usrData : Client context
31051 @see
31052 @return SUCCESS or FAIL
31053*/
31054WDI_Status
31055WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
31056 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
31057 void* pUserData)
31058{
31059 WDI_EventInfoType wdiEventData;
31060
31061 /*------------------------------------------------------------------------
31062 Sanity Check
31063 ------------------------------------------------------------------------*/
31064 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31065 {
31066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31067 "WDI API call before module is initialized - Fail request");
31068
31069 return WDI_STATUS_E_NOT_ALLOWED;
31070 }
31071
31072 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31073 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31074 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31075 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31076 wdiEventData.pUserData = pUserData;
31077
31078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31079 "%s:%d Enter", __func__, __LINE__);
31080
31081 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31082}
31083
31084/**
31085 @brief WDI_ProcessLLStatsClearReq -
31086 Clear Link Layer Stats request to FW
31087
31088 @param pWDICtx : wdi context
31089 pEventData : indication data
31090
31091 @see
31092 @return none
31093*/
31094WDI_Status
31095WDI_ProcessLLStatsClearReq
31096(
31097 WDI_ControlBlockType* pWDICtx,
31098 WDI_EventInfoType* pEventData
31099)
31100{
31101 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31102 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31103 wpt_uint8* pSendBuffer = NULL;
31104 wpt_uint16 usSendSize = 0;
31105 wpt_uint16 usDataOffset = 0;
31106 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31107
31108 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31109 ( NULL == pEventData->pCBfnc ))
31110 {
31111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31112 "%s: Invalid parameters", __func__);
31113 WDI_ASSERT(0);
31114 return WDI_STATUS_E_FAILURE;
31115 }
31116
31117 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31118 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31119
31120 /*-----------------------------------------------------------------------
31121 Get message buffer
31122 ! TO DO : proper conversion into the HAL Message Request Format
31123 -----------------------------------------------------------------------*/
31124 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31125 pWDICtx,
31126 WDI_LL_STATS_CLEAR_REQ,
31127 sizeof(tHalMacLlClearStatsReqParams),
31128 &pSendBuffer, &usDataOffset,
31129 &usSendSize))||
31130 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
31131 {
31132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31133 "Unable to get send buffer in %s %p %p %p", __func__,
31134 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
31135 WDI_ASSERT(0);
31136 return WDI_STATUS_E_FAILURE;
31137 }
Dino Mycled3d50022014-07-07 12:58:25 +053031138 /* Need to fill in the self STA Index */
31139 if ( WDI_STATUS_SUCCESS !=
31140 WDI_STATableFindStaidByAddr(pWDICtx,
31141 pwdiLLStatsClearReqParams->macAddr,
31142 &halLLStatsClearParams.sta_id))
31143 {
31144 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31145 MAC_ADDRESS_STR
31146 ": This station does not exist in the WDI Station Table",
31147 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
31148
31149 wpalMemoryFree(pSendBuffer);
31150 return WDI_STATUS_E_FAILURE;
31151 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031152
31153 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031154 halLLStatsClearParams.stats_clear_req_mask =
31155 pwdiLLStatsClearReqParams->statsClearReqMask;
31156 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
31157
31158 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31159 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
31160 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31161 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
31162 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31163 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
31164 halLLStatsClearParams.stats_clear_req_mask);
31165 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31166 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
31167
31168 wpalMemoryCopy(pSendBuffer+usDataOffset,
31169 &halLLStatsClearParams,
31170 sizeof(halLLStatsClearParams));
31171
31172 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31173
31174 /*-------------------------------------------------------------------------
31175 Send Clear Link Layer Stats Request to HAL
31176 -------------------------------------------------------------------------*/
31177 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31178 wdiLLStatsClearCb, pEventData->pUserData,
31179 WDI_LL_STATS_CLEAR_RSP);
31180}
31181#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053031182
31183#ifdef WLAN_FEATURE_EXTSCAN
31184
31185/**
31186 @brief Process EXTSCAN BUffer full indication from FW
31187
31188 @param pWDICtx: pointer to the WLAN DAL context
31189 pEventData: pointer to the event information structure
31190
31191 @see
31192 @return Result of the function call
31193*/
31194WDI_Status
31195WDI_ProcessEXTScanProgressInd
31196(
31197 WDI_ControlBlockType* pWDICtx,
31198 WDI_EventInfoType* pEventData
31199)
31200{
31201 WDI_LowLevelIndType wdiInd;
31202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31203
31204 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31205 "%s: ", __func__);
31206
31207 /* sanity check */
31208 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31209 ( NULL == pEventData->pEventData))
31210 {
31211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31212 "%s: Invalid parameters", __func__);
31213 WDI_ASSERT(0);
31214 return WDI_STATUS_E_FAILURE;
31215 }
31216
31217 /* Fill in the indication parameters */
31218 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
31219
31220 /* extract response and send it to UMAC */
31221 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31222
31223 /* Notify UMAC */
31224 if (pWDICtx->wdiLowLevelIndCB)
31225 {
31226 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31227 }
31228 else
31229 {
Dino Mycled3d50022014-07-07 12:58:25 +053031230 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053031231 "%s: WDILowLevelIndCb is null", __func__);
31232 WDI_ASSERT(0);
31233 return WDI_STATUS_E_FAILURE;
31234 }
31235 return WDI_STATUS_SUCCESS;
31236
31237} /* End of WDI_ProcessEXTScanProgressInd */
31238
31239
31240/**
31241 @brief Process EXTScan Scan Available indication from FW
31242
31243 @param pWDICtx: pointer to the WLAN DAL context
31244 pEventData: pointer to the event information structure
31245
31246 @see
31247 @return Result of the function call
31248*/
31249WDI_Status
31250WDI_ProcessEXTScanScanAvailableInd
31251(
31252 WDI_ControlBlockType* pWDICtx,
31253 WDI_EventInfoType* pEventData
31254)
31255{
31256 WDI_LowLevelIndType wdiInd;
31257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31258
31259 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31260 "%s: ", __func__);
31261
31262 /* sanity check */
31263 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31264 ( NULL == pEventData->pEventData))
31265 {
31266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31267 "%s: Invalid parameters", __func__);
31268 WDI_ASSERT(0);
31269 return WDI_STATUS_E_FAILURE;
31270 }
31271
31272
31273
31274 /* Fill in the indication parameters */
31275 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
31276
31277 /* extract response and send it to UMAC */
31278 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31279
31280 /* Notify UMAC */
31281 if (pWDICtx->wdiLowLevelIndCB)
31282 {
31283 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31284 }
31285 else
31286 {
31287 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31288 "%s: WDILowLevelIndCb is null", __func__);
31289 WDI_ASSERT(0);
31290 return WDI_STATUS_E_FAILURE;
31291 }
31292 return WDI_STATUS_SUCCESS;
31293} /* End of WDI_ProcessEXTScanScanDoneInd */
31294
31295/**
31296 @brief Process EXTScan Result Indication indication from FW
31297
31298 @param pWDICtx: pointer to the WLAN DAL context
31299 pEventData: pointer to the event information structure
31300
31301 @see
31302 @return Result of the function call
31303*/
31304WDI_Status
31305WDI_ProcessEXTScanResultInd
31306(
31307 WDI_ControlBlockType* pWDICtx,
31308 WDI_EventInfoType* pEventData
31309)
31310{
31311 WDI_LowLevelIndType wdiInd;
31312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31313
31314 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31315 "%s: ", __func__);
31316
31317 /* sanity check */
31318 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31319 ( NULL == pEventData->pEventData))
31320 {
31321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31322 "%s: Invalid parameters", __func__);
31323 WDI_ASSERT(0);
31324 return WDI_STATUS_E_FAILURE;
31325 }
31326
31327 /* Fill in the indication parameters */
31328 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
31329
31330 /* extract response and send it to UMAC */
31331 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31332
31333 /* Notify UMAC */
31334 if (pWDICtx->wdiLowLevelIndCB)
31335 {
31336 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31337 }
31338 else
31339 {
31340 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31341 "%s: WDILowLevelIndCb is null", __func__);
31342 WDI_ASSERT(0);
31343 return WDI_STATUS_E_FAILURE;
31344 }
31345 return WDI_STATUS_SUCCESS;
31346} /* End of WDI_ProcessEXTScanResultInd */
31347
31348/**
31349 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
31350
31351 @param pWDICtx: pointer to the WLAN DAL context
31352 pEventData: pointer to the event information structure
31353
31354 @see
31355 @return Result of the function call
31356*/
31357WDI_Status
31358WDI_ProcessEXTScanBssidHotListResultInd
31359(
31360 WDI_ControlBlockType* pWDICtx,
31361 WDI_EventInfoType* pEventData
31362)
31363{
31364 WDI_LowLevelIndType wdiInd;
31365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31366
31367 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31368 "%s: ", __func__);
31369
31370 /* sanity check */
31371 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31372 ( NULL == pEventData->pEventData))
31373 {
31374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31375 "%s: Invalid parameters", __func__);
31376 WDI_ASSERT(0);
31377 return WDI_STATUS_E_FAILURE;
31378 }
31379
31380 /* Fill in the indication parameters */
31381 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
31382
31383 /* extract response and send it to UMAC */
31384 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31385
31386 /* Notify UMAC */
31387 if (pWDICtx->wdiLowLevelIndCB)
31388 {
31389 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31390 }
31391 else
31392 {
31393 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31394 "%s: WDILowLevelIndCb is null", __func__);
31395 WDI_ASSERT(0);
31396 return WDI_STATUS_E_FAILURE;
31397 }
31398 return WDI_STATUS_SUCCESS;
31399} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
31400
31401/**
31402 @brief Process EXTScan Significant RSSI Result Indication indication from FW
31403
31404 @param pWDICtx: pointer to the WLAN DAL context
31405 pEventData: pointer to the event information structure
31406
31407 @see
31408 @return Result of the function call
31409*/
31410WDI_Status
31411WDI_ProcessEXTScanSignfRssiResultInd
31412(
31413 WDI_ControlBlockType* pWDICtx,
31414 WDI_EventInfoType* pEventData
31415)
31416{
31417 WDI_LowLevelIndType wdiInd;
31418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31419
31420 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31421 "%s: ", __func__);
31422
31423 /* sanity check */
31424 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31425 ( NULL == pEventData->pEventData))
31426 {
31427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31428 "%s: Invalid parameters", __func__);
31429 WDI_ASSERT(0);
31430 return WDI_STATUS_E_FAILURE;
31431 }
31432
31433 /* Fill in the indication parameters */
31434 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
31435
31436 /* extract response and send it to UMAC */
31437 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31438
31439 /* Notify UMAC */
31440 if (pWDICtx->wdiLowLevelIndCB)
31441 {
31442 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31443 }
31444 else
31445 {
31446 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31447 "%s: WDILowLevelIndCb is null", __func__);
31448 WDI_ASSERT(0);
31449 return WDI_STATUS_E_FAILURE;
31450 }
31451 return WDI_STATUS_SUCCESS;
31452} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
31453
31454/**
31455 @brief WDI_EXTScanGetCapabilitiesReq
31456
31457 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
31458 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
31459 of the Req operation received from the device
31460 pUserData: user data will be passed back with the callback
31461
31462 @return SUCCESS or FAIL
31463*/
31464WDI_Status
31465WDI_EXTScanGetCapabilitiesReq(
31466 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
31467 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
31468 void* pUserData)
31469{
31470 WDI_EventInfoType wdiEventData;
31471
31472 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31473 "%s: %d ",__func__, __LINE__);
31474 /*------------------------------------------------------------------------
31475 Sanity Check
31476 ------------------------------------------------------------------------*/
31477 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31478 {
31479 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31480 "WDI API call before module is initialized - Fail request");
31481
31482 return WDI_STATUS_E_NOT_ALLOWED;
31483 }
31484
31485 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
31486 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
31487 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
31488 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
31489 wdiEventData.pUserData = pUserData;
31490
31491 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31492}
31493
31494/**
31495 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
31496 Extended Scan Get Capability request to FW
31497
31498 @param pWDICtx : wdi context
31499 pEventData : indication data
31500
31501 @see
31502 @return none
31503*/
31504WDI_Status
31505WDI_ProcessEXTScanGetCapabilitiesReq
31506(
31507 WDI_ControlBlockType* pWDICtx,
31508 WDI_EventInfoType* pEventData
31509)
31510{
31511 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
31512 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
31513 wpt_uint8* pSendBuffer = NULL;
31514 wpt_uint16 usSendSize = 0;
31515 wpt_uint16 usDataOffset = 0;
31516 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
31517
31518 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31519 "%s: %d Enter",__func__, __LINE__);
31520
31521 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31522 ( NULL == pEventData->pCBfnc ))
31523 {
31524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31525 "%s: Invalid parameters", __func__);
31526 WDI_ASSERT(0);
31527 return WDI_STATUS_E_FAILURE;
31528 }
31529
31530 pwdiEXTScanGetCapabilitiesReqParams =
31531 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
31532 wdiEXTScanGetCapabilitiesRspCb =
31533 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
31534
31535 /*-----------------------------------------------------------------------
31536 Get message buffer
31537 ! TO DO : proper conversion into the HAL Message Request Format
31538 -----------------------------------------------------------------------*/
31539 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31540 pWDICtx,
31541 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
31542 sizeof(halEXTScanGetCapReqParams),
31543 &pSendBuffer, &usDataOffset,
31544 &usSendSize))||
31545 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
31546 {
31547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31548 "Unable to get send buffer in %s %p %p %p", __func__,
31549 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
31550 wdiEXTScanGetCapabilitiesRspCb);
31551 WDI_ASSERT(0);
31552 return WDI_STATUS_E_FAILURE;
31553 }
31554
31555 halEXTScanGetCapReqParams.requestId =
31556 pwdiEXTScanGetCapabilitiesReqParams->requestId;
31557 halEXTScanGetCapReqParams.sessionId =
31558 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
31559
31560 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31561 " requestId %u "
31562 " sessionId %u ",
31563 halEXTScanGetCapReqParams.requestId,
31564 halEXTScanGetCapReqParams.sessionId);
31565
31566 wpalMemoryCopy(pSendBuffer+usDataOffset,
31567 &halEXTScanGetCapReqParams,
31568 sizeof(halEXTScanGetCapReqParams));
31569
31570 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31571
31572
31573 /*-------------------------------------------------------------------------
31574 Send EXTScan Stop Request to HAL
31575 -------------------------------------------------------------------------*/
31576 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31577 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
31578 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
31579}
31580
31581/**
31582 @brief WDI_EXTScanGetCachedResultsReq
31583
31584 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
31585 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
31586 of the Req operation received from the device
31587 pUserData: user data will be passed back with the callback
31588
31589 @return SUCCESS or FAIL
31590*/
31591
31592WDI_Status
31593WDI_EXTScanGetCachedResultsReq(
31594 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
31595 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
31596 void* pUserData)
31597{
31598 WDI_EventInfoType wdiEventData;
31599
31600 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31601 "%s: %d Enter",__func__, __LINE__);
31602 /*------------------------------------------------------------------------
31603 Sanity Check
31604 ------------------------------------------------------------------------*/
31605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31606 {
31607 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31608 "WDI API call before module is initialized - Fail request");
31609
31610 return WDI_STATUS_E_NOT_ALLOWED;
31611 }
31612
31613 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
31614 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
31615 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
31616 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
31617 wdiEventData.pUserData = pUserData;
31618
31619 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31620}
31621
31622/**
31623 @brief WDI_ProcessEXTScanGetCachedResultsReq -
31624 Extended Scan Get Cached Result request to FW
31625
31626 @param pWDICtx : wdi context
31627 pEventData : indication data
31628
31629 @see
31630 @return none
31631*/
31632WDI_Status
31633WDI_ProcessEXTScanGetCachedResultsReq
31634(
31635 WDI_ControlBlockType* pWDICtx,
31636 WDI_EventInfoType* pEventData
31637)
31638{
31639 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
31640 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
31641 wpt_uint8* pSendBuffer = NULL;
31642 wpt_uint16 usSendSize = 0;
31643 wpt_uint16 usDataOffset = 0;
31644 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
31645
31646 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31647 "%s: %d Enter",__func__, __LINE__);
31648
31649 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31650 ( NULL == pEventData->pCBfnc ))
31651 {
31652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31653 "%s: Invalid parameters", __func__);
31654 WDI_ASSERT(0);
31655 return WDI_STATUS_E_FAILURE;
31656 }
31657
31658 pwdiEXTScanGetCachedResultsReqParams =
31659 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
31660 wdiEXTScanGetCachedResultsCb =
31661 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
31662
31663 /*-----------------------------------------------------------------------
31664 Get message buffer
31665 ! TO DO : proper conversion into the HAL Message Request Format
31666 -----------------------------------------------------------------------*/
31667 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31668 pWDICtx,
31669 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
31670 sizeof(tHalExtScanGetScanReq),
31671 &pSendBuffer, &usDataOffset,
31672 &usSendSize))||
31673 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
31674 {
31675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31676 "Unable to get send buffer in %s %p %p %p", __func__,
31677 pEventData, pwdiEXTScanGetCachedResultsReqParams,
31678 wdiEXTScanGetCachedResultsCb);
31679 WDI_ASSERT(0);
31680 return WDI_STATUS_E_FAILURE;
31681 }
31682
31683 halEXTScanGetScanReqParams.requestId =
31684 pwdiEXTScanGetCachedResultsReqParams->requestId;
31685 halEXTScanGetScanReqParams.sessionId =
31686 pwdiEXTScanGetCachedResultsReqParams->sessionId;
31687 halEXTScanGetScanReqParams.flush =
31688 pwdiEXTScanGetCachedResultsReqParams->flush;
31689
31690 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31691 " requestId %u "
31692 " sessionId %u "
31693 " flush %u ",
31694 halEXTScanGetScanReqParams.requestId,
31695 halEXTScanGetScanReqParams.sessionId,
31696 halEXTScanGetScanReqParams.flush);
31697
31698 wpalMemoryCopy(pSendBuffer+usDataOffset,
31699 &halEXTScanGetScanReqParams,
31700 sizeof(halEXTScanGetScanReqParams));
31701
31702 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31703
31704
31705 /*-------------------------------------------------------------------------
31706 Send EXTScan Stop Request to HAL
31707 -------------------------------------------------------------------------*/
31708 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31709 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
31710 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
31711}
31712
31713/**
31714 @brief WDI_EXTScanStopReq
31715
31716 @param WDI_EXTScanStopReqParams: Req parameter for the FW
31717 WDI_EXTScanStopRspCb: callback for passing back the response
31718 of the Req operation received from the device
31719 pUserData: user data will be passed back with the callback
31720
31721 @return SUCCESS or FAIL
31722*/
31723WDI_Status
31724WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
31725 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
31726 void* pUserData)
31727{
31728 WDI_EventInfoType wdiEventData;
31729
31730 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31731 "%s: %d ",__func__, __LINE__);
31732 /*------------------------------------------------------------------------
31733 Sanity Check
31734 ------------------------------------------------------------------------*/
31735 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31736 {
31737 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31738 "WDI API call before module is initialized - Fail request");
31739
31740 return WDI_STATUS_E_NOT_ALLOWED;
31741 }
31742
31743 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
31744 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
31745 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
31746 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
31747 wdiEventData.pUserData = pUserData;
31748
31749 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31750}
31751
31752/**
31753 @brief WDI_ProcessEXTScanStopReq -
31754 Extended Scan Stop request to FW
31755
31756 @param pWDICtx : wdi context
31757 pEventData : indication data
31758
31759 @see
31760 @return none
31761*/
31762WDI_Status
31763WDI_ProcessEXTScanStopReq
31764(
31765 WDI_ControlBlockType* pWDICtx,
31766 WDI_EventInfoType* pEventData
31767)
31768{
31769 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
31770 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
31771 wpt_uint8* pSendBuffer = NULL;
31772 wpt_uint16 usSendSize = 0;
31773 wpt_uint16 usDataOffset = 0;
31774 tHalExtScanStopReq halEXTScanStopReqParams;
31775
31776 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31777 "%s: %d ",__func__, __LINE__);
31778
31779 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31780 ( NULL == pEventData->pCBfnc ))
31781 {
31782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31783 "%s: Invalid parameters", __func__);
31784 WDI_ASSERT(0);
31785 return WDI_STATUS_E_FAILURE;
31786 }
31787
31788 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
31789 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
31790
31791 /*-----------------------------------------------------------------------
31792 Get message buffer
31793 ! TO DO : proper conversion into the HAL Message Request Format
31794 -----------------------------------------------------------------------*/
31795 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31796 pWDICtx,
31797 WDI_EXTSCAN_STOP_REQ,
31798 sizeof(tHalExtScanStopReq),
31799 &pSendBuffer, &usDataOffset,
31800 &usSendSize))||
31801 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
31802 {
31803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31804 "Unable to get send buffer in %s %p %p %p", __func__,
31805 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
31806 WDI_ASSERT(0);
31807 return WDI_STATUS_E_FAILURE;
31808 }
31809
31810 halEXTScanStopReqParams.requestId =
31811 pwdiEXTScanStopReqParams->requestId;
31812 halEXTScanStopReqParams.sessionId =
31813 pwdiEXTScanStopReqParams->sessionId;
31814
31815 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31816 " halEXTScanStopReqParams.requestId %u "
31817 " halEXTScanStopReqParams.sessionId %u ",
31818 halEXTScanStopReqParams.requestId,
31819 halEXTScanStopReqParams.sessionId);
31820
31821 wpalMemoryCopy(pSendBuffer+usDataOffset,
31822 &halEXTScanStopReqParams,
31823 sizeof(halEXTScanStopReqParams));
31824
31825 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31826
31827
31828 /*-------------------------------------------------------------------------
31829 Send EXTScan Stop Request to HAL
31830 -------------------------------------------------------------------------*/
31831 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31832 wdiEXTScanStopCb, pEventData->pUserData,
31833 WDI_EXTSCAN_STOP_RSP);
31834}
31835
31836/**
31837 @brief WDI_EXTScanStartReq
31838
31839 @param WDI_EXTScanStartReqParams: Req parameter for the FW
31840 WDI_EXTScanStartRspCb: callback for passing back the response
31841 of the Req operation received from the device
31842 pUserData: user data will be passed back with the callback
31843
31844 @return SUCCESS or FAIL
31845*/
31846WDI_Status
31847WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
31848 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
31849 void* pUserData)
31850{
31851 WDI_EventInfoType wdiEventData;
31852
31853 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31854 "%s: %d Enter",__func__, __LINE__);
31855 /*------------------------------------------------------------------------
31856 Sanity Check
31857 ------------------------------------------------------------------------*/
31858 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31859 {
31860 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31861 "WDI API call before module is initialized - Fail request");
31862
31863 return WDI_STATUS_E_NOT_ALLOWED;
31864 }
31865
31866 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
31867 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
31868 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
31869 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
31870 wdiEventData.pUserData = pUserData;
31871
31872 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31873}
31874
31875/**
31876 @brief WDI_ProcessEXTScanStartReq -
31877 Extended Scan Start Request to FW
31878
31879 @param pWDICtx : wdi context
31880 pEventData : indication data
31881
31882 @see
31883 @return none
31884*/
31885WDI_Status
31886WDI_ProcessEXTScanStartReq
31887(
31888 WDI_ControlBlockType* pWDICtx,
31889 WDI_EventInfoType* pEventData
31890)
31891{
31892 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
31893 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
31894 wpt_uint8* pSendBuffer = NULL;
31895 wpt_uint16 usSendSize = 0;
31896 wpt_uint16 usDataOffset = 0;
31897 tpHalExtScanStartReq pHalExtScanStartReqParams;
31898 int i = 0;
31899 int j = 0;
31900
31901 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31902 "%s: %d Enter",__func__, __LINE__);
31903
31904 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31905 ( NULL == pEventData->pCBfnc ))
31906 {
31907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31908 "%s: Invalid parameters", __func__);
31909 WDI_ASSERT(0);
31910 return WDI_STATUS_E_FAILURE;
31911 }
31912
31913 pwdiEXTScanStartReqParams =
31914 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
31915 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
31916
31917 /*-----------------------------------------------------------------------
31918 Get message buffer
31919 ! TO DO : proper conversion into the HAL Message Request Format
31920 -----------------------------------------------------------------------*/
31921 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31922 pWDICtx,
31923 WDI_EXTSCAN_START_REQ,
31924 sizeof(tHalExtScanStartReq),
31925 &pSendBuffer, &usDataOffset,
31926 &usSendSize))||
31927 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
31928 {
31929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31930 "Unable to get send buffer in %s %p %p %p", __func__,
31931 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
31932 WDI_ASSERT(0);
31933 return WDI_STATUS_E_FAILURE;
31934 }
31935
31936 pHalExtScanStartReqParams =
31937 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
31938
31939 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
31940 pHalExtScanStartReqParams->maxApPerScan =
31941 pwdiEXTScanStartReqParams->maxAPperScan;
31942 pHalExtScanStartReqParams->reportThreshold =
31943 pwdiEXTScanStartReqParams->reportThreshold;
31944 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
31945 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
31946 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
31947
31948 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
31949 {
31950 pHalExtScanStartReqParams->bucketData[i].bucketId =
31951 pwdiEXTScanStartReqParams->buckets[i].bucket;
31952 pHalExtScanStartReqParams->bucketData[i].channelBand =
31953 pwdiEXTScanStartReqParams->buckets[i].band;
31954 pHalExtScanStartReqParams->bucketData[i].period =
31955 pwdiEXTScanStartReqParams->buckets[i].period;
31956 pHalExtScanStartReqParams->bucketData[i].reportEvents =
31957 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
31958 pHalExtScanStartReqParams->bucketData[i].numChannels =
31959 pwdiEXTScanStartReqParams->buckets[i].numChannels;
31960
31961 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
31962 {
31963 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
31964 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
31965 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
31966 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
31967 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
31968 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
31969 }
31970
31971 }
31972
31973
31974 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31975 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
31976 " sessionId %u numBuckets%u ",
31977 pHalExtScanStartReqParams->basePeriod,
31978 pHalExtScanStartReqParams->maxApPerScan,
31979 pHalExtScanStartReqParams->reportThreshold,
31980 pHalExtScanStartReqParams->requestId,
31981 pHalExtScanStartReqParams->sessionId,
31982 pHalExtScanStartReqParams->numBuckets);
31983
31984 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
31985 {
31986 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
31987 " %d) bucketId %u channelBand %u period %u "
31988 " reportEvents %u numChannels %u ",i,
31989 pHalExtScanStartReqParams->bucketData[i].bucketId,
31990 pHalExtScanStartReqParams->bucketData[i].channelBand,
31991 pHalExtScanStartReqParams->bucketData[i].period,
31992 pHalExtScanStartReqParams->bucketData[i].reportEvents,
31993 pHalExtScanStartReqParams->bucketData[i].numChannels);
31994
31995 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
31996 {
31997 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31998 "%d) channel %u dwellTimeMs %u passive %u ",j,
31999 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
32000 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
32001 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
32002 }
32003
32004 }
32005
Dino Mycle41bdc942014-06-10 11:30:24 +053032006 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32007
32008 /*-------------------------------------------------------------------------
32009 Send EXTSCAN Start Request to HAL
32010 -------------------------------------------------------------------------*/
32011 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32012 wdiEXTScanStartCb, pEventData->pUserData,
32013 WDI_EXTSCAN_START_RSP);
32014}
32015
32016/**
32017 @brief WDI_EXTScanSetBSSIDHotlistReq
32018
32019 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
32020 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
32021 of the Req operation received from the device
32022 pUserData: user data will be passed back with the callback
32023
32024 @return SUCCESS or FAIL
32025*/
32026WDI_Status
32027WDI_EXTScanSetBSSIDHotlistReq(
32028 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
32029 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
32030 void* pUserData)
32031{
32032 WDI_EventInfoType wdiEventData;
32033
32034 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32035 "%s: %d Enter ",__func__, __LINE__);
32036 /*------------------------------------------------------------------------
32037 Sanity Check
32038 ------------------------------------------------------------------------*/
32039 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32040 {
32041 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32042 "WDI API call before module is initialized - Fail request");
32043
32044 return WDI_STATUS_E_NOT_ALLOWED;
32045 }
32046
32047 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
32048 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
32049 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
32050 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
32051 wdiEventData.pUserData = pUserData;
32052
32053 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32054}
32055
32056/**
32057 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
32058 Extended Scan Set BSSSID Hotlist Request to FW
32059
32060 @param pWDICtx : wdi context
32061 pEventData : indication data
32062
32063 @see
32064 @return none
32065*/
32066WDI_Status
32067WDI_ProcessEXTScanSetBSSIDHotlistReq
32068(
32069 WDI_ControlBlockType* pWDICtx,
32070 WDI_EventInfoType* pEventData
32071)
32072{
32073 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
32074 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32075 wpt_uint8* pSendBuffer = NULL;
32076 wpt_uint16 usSendSize = 0;
32077 wpt_uint16 usDataOffset = 0;
32078 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
32079 int i;
32080
32081 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32082 "%s: %d Enter",__func__, __LINE__);
32083
32084 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32085 ( NULL == pEventData->pCBfnc ))
32086 {
32087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32088 "%s: Invalid parameters", __func__);
32089 WDI_ASSERT(0);
32090 return WDI_STATUS_E_FAILURE;
32091 }
32092
32093 pwdiEXTScanSetBSSIDHotlistReqParams =
32094 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
32095 wdiEXTScanSetBSSIDHotlistRspCb =
32096 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
32097
32098 /*-----------------------------------------------------------------------
32099 Get message buffer
32100 ! TO DO : proper conversion into the HAL Message Request Format
32101 -----------------------------------------------------------------------*/
32102 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32103 pWDICtx,
32104 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
32105 sizeof(tHalBssidHotlistSetReq),
32106 &pSendBuffer, &usDataOffset,
32107 &usSendSize))||
32108 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
32109 {
32110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32111 "Unable to get send buffer in %s %p %p %p", __func__,
32112 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
32113 wdiEXTScanSetBSSIDHotlistRspCb);
32114 WDI_ASSERT(0);
32115 return WDI_STATUS_E_FAILURE;
32116 }
32117 pHalBssidHotlistSetReqParams =
32118 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
32119
32120 pHalBssidHotlistSetReqParams->requestId =
32121 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
32122
32123 pHalBssidHotlistSetReqParams->sessionId =
32124 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
32125
32126 pHalBssidHotlistSetReqParams->numAp =
32127 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
32128
32129 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
32130
32131 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
32132 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
32133 WDI_MAC_ADDR_LEN);
32134
32135 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
32136 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
32137
32138 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
32139 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
32140
32141 pHalBssidHotlistSetReqParams->ap[i].channel =
32142 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
32143
32144 }
32145
32146 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32147 "ReqID %u sessionId %u numAp %u ",
32148 pHalBssidHotlistSetReqParams->requestId,
32149 pHalBssidHotlistSetReqParams->sessionId,
32150 pHalBssidHotlistSetReqParams->numAp);
32151
32152 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
32153
32154 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32155 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32156 __func__, __LINE__, i,
32157 pHalBssidHotlistSetReqParams->ap[i].bssid,
32158 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
32159 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
32160 pHalBssidHotlistSetReqParams->ap[i].channel);
32161
32162 }
32163
32164 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32165
32166
32167 /*-------------------------------------------------------------------------
32168 Send EXTScan Stop Request to HAL
32169 -------------------------------------------------------------------------*/
32170 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32171 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
32172 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
32173}
32174
32175/**
32176 @brief WDI_EXTScanResetBSSIDHotlistReq
32177
32178 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
32179 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
32180 of the Req operation received from the device
32181 pUserData: user data will be passed back with the callback
32182
32183 @return SUCCESS or FAIL
32184*/
32185WDI_Status
32186WDI_EXTScanResetBSSIDHotlistReq(
32187 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
32188 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
32189 void* pUserData)
32190{
32191 WDI_EventInfoType wdiEventData;
32192
32193 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32194 "%s: %d",__func__, __LINE__);
32195 /*------------------------------------------------------------------------
32196 Sanity Check
32197 ------------------------------------------------------------------------*/
32198 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32199 {
32200 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32201 "WDI API call before module is initialized - Fail request");
32202
32203 return WDI_STATUS_E_NOT_ALLOWED;
32204 }
32205
32206 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
32207 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
32208 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
32209 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
32210 wdiEventData.pUserData = pUserData;
32211
32212 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32213}
32214
32215/**
32216 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
32217 Extended Scan reset BSSID hotlist Request to FW
32218
32219 @param pWDICtx : wdi context
32220 pEventData : indication data
32221
32222 @see
32223 @return none
32224*/
32225WDI_Status
32226WDI_ProcessEXTScanResetBSSIDHotlistReq
32227(
32228 WDI_ControlBlockType* pWDICtx,
32229 WDI_EventInfoType* pEventData
32230)
32231{
32232 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
32233 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32234 wpt_uint8* pSendBuffer = NULL;
32235 wpt_uint16 usSendSize = 0;
32236 wpt_uint16 usDataOffset = 0;
32237 tpHalHotlistResetReq pHalHotlistResetReqParams;
32238
32239 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32240 "%s: %d",__func__, __LINE__);
32241
32242 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32243 ( NULL == pEventData->pCBfnc ))
32244 {
32245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32246 "%s: Invalid parameters", __func__);
32247 WDI_ASSERT(0);
32248 return WDI_STATUS_E_FAILURE;
32249 }
32250
32251 pwdiEXTScanResetBSSIDHotlistReqParams =
32252 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
32253 wdiEXTScanResetBSSIDHotlistRspCb =
32254 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
32255
32256 /*-----------------------------------------------------------------------
32257 Get message buffer
32258 ! TO DO : proper conversion into the HAL Message Request Format
32259 -----------------------------------------------------------------------*/
32260 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32261 pWDICtx,
32262 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
32263 sizeof(tHalHotlistResetReq),
32264 &pSendBuffer, &usDataOffset,
32265 &usSendSize))||
32266 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
32267 {
32268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32269 "Unable to get send buffer in %s %p %p %p", __func__,
32270 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
32271 wdiEXTScanResetBSSIDHotlistRspCb);
32272 WDI_ASSERT(0);
32273 return WDI_STATUS_E_FAILURE;
32274 }
32275 pHalHotlistResetReqParams =
32276 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
32277
32278 pHalHotlistResetReqParams->requestId =
32279 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
32280
32281 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32282
32283 /*-------------------------------------------------------------------------
32284 Send EXTScan Stop Request to HAL
32285 -------------------------------------------------------------------------*/
32286 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32287 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
32288 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
32289}
32290
32291/**
32292 @brief WDI_EXTScanSetSignfRSSIChangeReq
32293
32294 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
32295 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
32296 of the Req operation received from the device
32297 pUserData: user data will be passed back with the callback
32298
32299 @return SUCCESS or FAIL
32300*/
32301WDI_Status
32302WDI_EXTScanSetSignfRSSIChangeReq(
32303 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
32304 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
32305 void* pUserData)
32306{
32307 WDI_EventInfoType wdiEventData;
32308
32309 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32310 "%s: %d ",__func__, __LINE__);
32311 /*------------------------------------------------------------------------
32312 Sanity Check
32313 ------------------------------------------------------------------------*/
32314 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32315 {
32316 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32317 "WDI API call before module is initialized - Fail request");
32318
32319 return WDI_STATUS_E_NOT_ALLOWED;
32320 }
32321
32322 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
32323 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
32324 wdiEventData.uEventDataSize =
32325 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
32326 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
32327 wdiEventData.pUserData = pUserData;
32328
32329 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32330}
32331
32332/**
32333 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
32334 Extended Scan set Significant RSSI change Request to FW
32335
32336 @param pWDICtx : wdi context
32337 pEventData : indication data
32338
32339 @see
32340 @return none
32341*/
32342WDI_Status
32343WDI_ProcessEXTScanSetSignifRSSIChangeReq
32344(
32345 WDI_ControlBlockType* pWDICtx,
32346 WDI_EventInfoType* pEventData
32347)
32348{
32349 WDI_EXTScanSetSignfRSSIChangeReqParams*
32350 pwdiEXTScanSetSignfRSSIChangeReqParams;
32351 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
32352 wpt_uint8* pSendBuffer = NULL;
32353 wpt_uint16 usSendSize = 0;
32354 wpt_uint16 usDataOffset = 0;
32355 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
32356 int i;
32357
32358 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32359 "%s: %d Enter",__func__, __LINE__);
32360
32361 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32362 ( NULL == pEventData->pCBfnc ))
32363 {
32364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32365 "%s: Invalid parameters", __func__);
32366 WDI_ASSERT(0);
32367 return WDI_STATUS_E_FAILURE;
32368 }
32369
32370 pwdiEXTScanSetSignfRSSIChangeReqParams =
32371 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
32372 wdiEXTScanSetSignfRSSIChangeRspCb =
32373 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32374
32375 /*-----------------------------------------------------------------------
32376 Get message buffer
32377 ! TO DO : proper conversion into the HAL Message Request Format
32378 -----------------------------------------------------------------------*/
32379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32380 pWDICtx,
32381 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
32382 sizeof(tHalSigRssiSetReq),
32383 &pSendBuffer, &usDataOffset,
32384 &usSendSize))||
32385 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
32386 {
32387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32388 "Unable to get send buffer in %s %p %p %p", __func__,
32389 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
32390 wdiEXTScanSetSignfRSSIChangeRspCb);
32391 WDI_ASSERT(0);
32392 return WDI_STATUS_E_FAILURE;
32393 }
32394
32395 pHalSigRssiSetReqParams =
32396 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
32397
32398 pHalSigRssiSetReqParams->requestId =
32399 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
32400 pHalSigRssiSetReqParams->sessionId =
32401 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
32402 pHalSigRssiSetReqParams->rssiSampleSize =
32403 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
32404 pHalSigRssiSetReqParams->lostApSampleSize =
32405 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
32406 pHalSigRssiSetReqParams->minBreaching =
32407 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
32408 pHalSigRssiSetReqParams->numAp =
32409 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
32410
32411
32412 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
32413
32414 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
32415 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
32416 WDI_MAC_ADDR_LEN);
32417
32418 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
32419 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
32420
32421 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
32422 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
32423
32424 pHalSigRssiSetReqParams->ap[i].channel =
32425 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
32426
32427 }
32428
32429
32430 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32431 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
32432 " minBreaching %u numAp %u ",
32433 pHalSigRssiSetReqParams->requestId,
32434 pHalSigRssiSetReqParams->sessionId,
32435 pHalSigRssiSetReqParams->rssiSampleSize,
32436 pHalSigRssiSetReqParams->lostApSampleSize,
32437 pHalSigRssiSetReqParams->minBreaching,
32438 pHalSigRssiSetReqParams->numAp);
32439
32440 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
32441
32442 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32443 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32444 i,
32445 pHalSigRssiSetReqParams->ap[i].bssid,
32446 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
32447 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
32448 pHalSigRssiSetReqParams->ap[i].channel);
32449
32450 }
32451
32452 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32453
32454
32455 /*-------------------------------------------------------------------------
32456 Send EXTScan Stop Request to HAL
32457 -------------------------------------------------------------------------*/
32458 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32459 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
32460 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
32461}
32462
32463/**
32464 @brief WDI_EXTScanResetSignfRSSIChangeReq
32465
32466 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
32467 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
32468 of the Req operation received from the device
32469 pUserData: user data will be passed back with the callback
32470
32471 @return SUCCESS or FAIL
32472*/
32473WDI_Status
32474WDI_EXTScanResetSignfRSSIChangeReq(
32475 WDI_EXTScanResetSignfRSSIChangeReqParams*
32476 pwdiEXTScanResetSignfRSSIChangeReqParams,
32477 WDI_EXTScanResetSignfRSSIChangeRspCb
32478 wdiEXTScanResetSignfRSSIChangeRspCb,
32479 void* pUserData)
32480{
32481 WDI_EventInfoType wdiEventData;
32482
32483 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32484 "%s: %d ",__func__, __LINE__);
32485 /*------------------------------------------------------------------------
32486 Sanity Check
32487 ------------------------------------------------------------------------*/
32488 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32489 {
32490 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32491 "WDI API call before module is initialized - Fail request");
32492
32493 return WDI_STATUS_E_NOT_ALLOWED;
32494 }
32495
32496 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
32497 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
32498 wdiEventData.uEventDataSize =
32499 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
32500 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
32501 wdiEventData.pUserData = pUserData;
32502
32503 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32504}
32505
32506/**
32507 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
32508 Extended Scana reset Significant RSSI change Request to FW
32509
32510 @param pWDICtx : wdi context
32511 pEventData : indication data
32512
32513 @see
32514 @return none
32515*/
32516WDI_Status
32517WDI_ProcessEXTScanResetSignfRSSIChangeReq
32518(
32519 WDI_ControlBlockType* pWDICtx,
32520 WDI_EventInfoType* pEventData
32521)
32522{
32523 WDI_EXTScanResetSignfRSSIChangeReqParams*
32524 pwdiEXTScanResetSignfRSSIChangeReqParams;
32525 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
32526 wpt_uint8* pSendBuffer = NULL;
32527 wpt_uint16 usSendSize = 0;
32528 wpt_uint16 usDataOffset = 0;
32529 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
32530
32531 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32532 "%s: %d ",__func__, __LINE__);
32533
32534 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32535 ( NULL == pEventData->pCBfnc ))
32536 {
32537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32538 "%s: Invalid parameters", __func__);
32539 WDI_ASSERT(0);
32540 return WDI_STATUS_E_FAILURE;
32541 }
32542
32543 pwdiEXTScanResetSignfRSSIChangeReqParams =
32544 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
32545 wdiEXTScanResetSignfRSSIChangeRspCb =
32546 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32547
32548 /*-----------------------------------------------------------------------
32549 Get message buffer
32550 ! TO DO : proper conversion into the HAL Message Request Format
32551 -----------------------------------------------------------------------*/
32552 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32553 pWDICtx,
32554 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
32555 sizeof(tHalSigRssiResetReq),
32556 &pSendBuffer, &usDataOffset,
32557 &usSendSize))||
32558 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
32559 {
32560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32561 "Unable to get send buffer in %s %p %p %p", __func__,
32562 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
32563 wdiEXTScanResetSignfRSSIChangeRspCb);
32564 WDI_ASSERT(0);
32565 return WDI_STATUS_E_FAILURE;
32566 }
32567 pHalSigRssiResetReqParams =
32568 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
32569
32570 pHalSigRssiResetReqParams->requestId =
32571 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
32572
32573 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32574
32575
32576 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32577 wdiEXTScanResetSignfRSSIChangeRspCb,
32578 pEventData->pUserData,
32579 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
32580}
32581
32582/**
32583 @brief Process Extended Scan Start Rsp function (called when a response
32584 is being received over the bus from HAL)
32585
32586 @param pWDICtx: pointer to the WLAN DAL context
32587 pEventData: pointer to the event information structure
32588
32589 @see
32590 @return Result of the function call
32591*/
32592WDI_Status
32593WDI_ProcessEXTScanStartRsp
32594(
32595 WDI_ControlBlockType* pWDICtx,
32596 WDI_EventInfoType* pEventData
32597)
32598{
32599 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
32600
32601 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32602 "%s: %d",__func__, __LINE__);
32603 /*-------------------------------------------------------------------------
32604 Sanity check
32605 -------------------------------------------------------------------------*/
32606 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32607 ( NULL == pEventData->pEventData))
32608 {
32609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32610 "%s: Invalid parameters", __func__);
32611 WDI_ASSERT(0);
32612 return WDI_STATUS_E_FAILURE;
32613 }
32614
32615 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32616 if ( NULL == wdiEXTScanStartRspCb)
32617 {
32618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32619 "%s: Callback function Invalid", __func__);
32620 WDI_ASSERT(0);
32621 return WDI_STATUS_E_FAILURE;
32622 }
32623
32624 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
32625
32626 return WDI_STATUS_SUCCESS;
32627}
32628
32629
32630/**
32631 @brief Process Extended Scan Stop Rsp function (called when a response
32632 is being received over the bus from HAL)
32633
32634 @param pWDICtx: pointer to the WLAN DAL context
32635 pEventData: pointer to the event information structure
32636
32637 @see
32638 @return Result of the function call
32639*/
32640WDI_Status
32641WDI_ProcessEXTScanStopRsp
32642(
32643 WDI_ControlBlockType* pWDICtx,
32644 WDI_EventInfoType* pEventData
32645)
32646{
32647 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
32648
32649 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32650 "%s: %d",__func__, __LINE__);
32651
32652
32653 /*-------------------------------------------------------------------------
32654 Sanity check
32655 -------------------------------------------------------------------------*/
32656 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32657 ( NULL == pEventData->pEventData))
32658 {
32659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32660 "%s: Invalid parameters", __func__);
32661 WDI_ASSERT(0);
32662 return WDI_STATUS_E_FAILURE;
32663 }
32664
32665 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32666 if ( NULL == wdiEXTScanStopRspCb)
32667 {
32668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32669 "%s: Callback function Invalid", __func__);
32670 WDI_ASSERT(0);
32671 return WDI_STATUS_E_FAILURE;
32672 }
32673
32674 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32675
32676 return WDI_STATUS_SUCCESS;
32677}
32678
32679/**
32680 @brief Process Extended Scan Get Cached Rsp function (called when a response
32681 is being received over the bus from HAL)
32682
32683 @param pWDICtx: pointer to the WLAN DAL context
32684 pEventData: pointer to the event information structure
32685
32686 @see
32687 @return Result of the function call
32688*/
32689WDI_Status
32690WDI_ProcessEXTScanGetCachedResultsRsp
32691(
32692 WDI_ControlBlockType* pWDICtx,
32693 WDI_EventInfoType* pEventData
32694)
32695{
32696 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
32697
32698 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32699 "%s: %d Enter",__func__, __LINE__);
32700
32701
32702 /*-------------------------------------------------------------------------
32703 Sanity check
32704 -------------------------------------------------------------------------*/
32705 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32706 ( NULL == pEventData->pEventData))
32707 {
32708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32709 "%s: Invalid parameters", __func__);
32710 WDI_ASSERT(0);
32711 return WDI_STATUS_E_FAILURE;
32712 }
32713
32714 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32715 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
32716 {
32717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32718 "%s: Callback function Invalid", __func__);
32719 WDI_ASSERT(0);
32720 return WDI_STATUS_E_FAILURE;
32721 }
32722
32723 wdiEXTScanGetCachedResultsRspCb(
32724 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32725
32726 return WDI_STATUS_SUCCESS;
32727}
32728
32729/**
32730 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
32731 is being received over the bus from HAL)
32732
32733 @param pWDICtx: pointer to the WLAN DAL context
32734 pEventData: pointer to the event information structure
32735
32736 @see
32737 @return Result of the function call
32738*/
32739WDI_Status
32740WDI_ProcessEXTScanGetCapabilitiesRsp
32741(
32742 WDI_ControlBlockType* pWDICtx,
32743 WDI_EventInfoType* pEventData
32744)
32745{
32746 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32747
32748 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32749 "%s: %d ",__func__, __LINE__);
32750
32751
32752 /*-------------------------------------------------------------------------
32753 Sanity check
32754 -------------------------------------------------------------------------*/
32755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32756 ( NULL == pEventData->pEventData))
32757 {
32758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32759 "%s: Invalid parameters", __func__);
32760 WDI_ASSERT(0);
32761 return WDI_STATUS_E_FAILURE;
32762 }
32763
32764 wdiEXTScanGetCapabilitiesRspCb =
32765 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
32766 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
32767 {
32768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32769 "%s: Callback function Invalid", __func__);
32770 WDI_ASSERT(0);
32771 return WDI_STATUS_E_FAILURE;
32772 }
32773
32774 wdiEXTScanGetCapabilitiesRspCb(
32775 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32776
32777 return WDI_STATUS_SUCCESS;
32778}
32779
32780/**
32781 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
32782 response is being received over the bus from HAL)
32783
32784 @param pWDICtx: pointer to the WLAN DAL context
32785 pEventData: pointer to the event information structure
32786
32787 @see
32788 @return Result of the function call
32789*/
32790WDI_Status
32791WDI_ProcessEXTScanSetHotlistBSSIDRsp
32792(
32793 WDI_ControlBlockType* pWDICtx,
32794 WDI_EventInfoType* pEventData
32795)
32796{
32797 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32798
32799 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32800 "%s: %d ",__func__, __LINE__);
32801
32802
32803 /*-------------------------------------------------------------------------
32804 Sanity check
32805 -------------------------------------------------------------------------*/
32806 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32807 ( NULL == pEventData->pEventData))
32808 {
32809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32810 "%s: Invalid parameters", __func__);
32811 WDI_ASSERT(0);
32812 return WDI_STATUS_E_FAILURE;
32813 }
32814
32815 wdiEXTScanSetBSSIDHotlistRspCb =
32816 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
32817 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
32818 {
32819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32820 "%s: Callback function Invalid", __func__);
32821 WDI_ASSERT(0);
32822 return WDI_STATUS_E_FAILURE;
32823 }
32824
32825 wdiEXTScanSetBSSIDHotlistRspCb(
32826 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32827
32828 return WDI_STATUS_SUCCESS;
32829}
32830
32831/**
32832 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
32833 when a response is being received over the bus from HAL)
32834
32835 @param pWDICtx: pointer to the WLAN DAL context
32836 pEventData: pointer to the event information structure
32837
32838 @see
32839 @return Result of the function call
32840*/
32841WDI_Status
32842WDI_ProcessEXTScanResetHotlistBSSIDRsp
32843(
32844 WDI_ControlBlockType* pWDICtx,
32845 WDI_EventInfoType* pEventData
32846)
32847{
32848 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32849
32850 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32851 "%s: %d ",__func__, __LINE__);
32852
32853
32854 /*-------------------------------------------------------------------------
32855 Sanity check
32856 -------------------------------------------------------------------------*/
32857 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32858 ( NULL == pEventData->pEventData))
32859 {
32860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32861 "%s: Invalid parameters", __func__);
32862 WDI_ASSERT(0);
32863 return WDI_STATUS_E_FAILURE;
32864 }
32865
32866 wdiEXTScanResetBSSIDHotlistRspCb =
32867 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
32868 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
32869 {
32870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32871 "%s: Callback function Invalid", __func__);
32872 WDI_ASSERT(0);
32873 return WDI_STATUS_E_FAILURE;
32874 }
32875
32876 wdiEXTScanResetBSSIDHotlistRspCb(
32877 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32878
32879 return WDI_STATUS_SUCCESS;
32880}
32881
32882/**
32883 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
32884 when a response is being received over the bus from HAL)
32885
32886 @param pWDICtx: pointer to the WLAN DAL context
32887 pEventData: pointer to the event information structure
32888
32889 @see
32890 @return Result of the function call
32891*/
32892WDI_Status
32893WDI_ProcessEXTScanSetSignfRSSIChangeRsp
32894(
32895 WDI_ControlBlockType* pWDICtx,
32896 WDI_EventInfoType* pEventData
32897)
32898{
32899 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
32900
32901 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32902 "%s: %d",__func__, __LINE__);
32903
32904
32905 /*-------------------------------------------------------------------------
32906 Sanity check
32907 -------------------------------------------------------------------------*/
32908 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32909 ( NULL == pEventData->pEventData))
32910 {
32911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32912 "%s: Invalid parameters", __func__);
32913 WDI_ASSERT(0);
32914 return WDI_STATUS_E_FAILURE;
32915 }
32916
32917 wdiEXTScanSetSignfRSSIChangeRspCb =
32918 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
32919 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
32920 {
32921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32922 "%s: Callback function Invalid", __func__);
32923 WDI_ASSERT(0);
32924 return WDI_STATUS_E_FAILURE;
32925 }
32926
32927 wdiEXTScanSetSignfRSSIChangeRspCb(
32928 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32929
32930 return WDI_STATUS_SUCCESS;
32931}
32932
32933/**
32934 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
32935 (called when a response is being received over the bus from HAL)
32936
32937 @param pWDICtx: pointer to the WLAN DAL context
32938 pEventData: pointer to the event information structure
32939
32940 @see
32941 @return Result of the function call
32942*/
32943WDI_Status
32944WDI_ProcessEXTScanResetSignfRSSIChangeRsp
32945(
32946 WDI_ControlBlockType* pWDICtx,
32947 WDI_EventInfoType* pEventData
32948)
32949{
32950 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
32951
32952 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32953 "%s: %d Enter",__func__, __LINE__);
32954
32955
32956 /*-------------------------------------------------------------------------
32957 Sanity check
32958 -------------------------------------------------------------------------*/
32959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32960 ( NULL == pEventData->pEventData))
32961 {
32962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32963 "%s: Invalid parameters", __func__);
32964 WDI_ASSERT(0);
32965 return WDI_STATUS_E_FAILURE;
32966 }
32967
32968 wdiEXTScanResetSignfRSSIChangeRspCb =
32969 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
32970 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
32971 {
32972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32973 "%s: Callback function Invalid", __func__);
32974 WDI_ASSERT(0);
32975 return WDI_STATUS_E_FAILURE;
32976 }
32977
32978 wdiEXTScanResetSignfRSSIChangeRspCb(
32979 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32980
32981 return WDI_STATUS_SUCCESS;
32982}
32983#endif /* WLAN_FEATURE_EXTSCAN */