blob: 59e9a30e5b6d3a64b35b12aec5aaaf3956784a42 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Varun Reddy Yeturu2ce47b32014-01-09 21:55:37 -08002 * Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
Jeff Johnson295189b2012-06-20 16:38:30 -070059===========================================================================*/
60
61/*===========================================================================
62
63 EDIT HISTORY FOR FILE
64
65
66 This section contains comments describing changes made to the module.
67 Notice that changes are listed in reverse chronological order.
68
69
70 $Header$$DateTime$$Author$
71
72
73 when who what, where, why
74---------- --- --------------------------------------------------------
7510/05/11 hap Adding support for Keep Alive
762010-08-09 lti Created module
77
78===========================================================================*/
79
80/*----------------------------------------------------------------------------
81 * Include Files
82 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070083#include "wlan_qct_wdi.h"
84#include "wlan_qct_wdi_i.h"
85#include "wlan_qct_wdi_sta.h"
86#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070087
Jeff Johnsone7245742012-09-05 17:12:55 -070088#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070089
90#include "wlan_qct_pal_api.h"
91#include "wlan_qct_pal_type.h"
92#include "wlan_qct_pal_status.h"
93#include "wlan_qct_pal_sync.h"
94#include "wlan_qct_pal_msg.h"
95#include "wlan_qct_pal_trace.h"
96#include "wlan_qct_pal_packet.h"
97
Jeff Johnsone7245742012-09-05 17:12:55 -070098#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070099
100#include "wlan_hal_msg.h"
101
Jeff Johnson295189b2012-06-20 16:38:30 -0700102#include "pttMsgApi.h"
Srikant Kuppa17ef2a62013-08-29 15:27:56 -0700103#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700104
105/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700106 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700107 ===========================================================================*/
108#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
109
Jeff Johnsone7245742012-09-05 17:12:55 -0700110#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
111#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
112
Yue Ma70627492013-03-28 11:33:46 -0700113#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700114
115#ifdef FEATURE_WLAN_SCAN_PNO
116#define WDI_PNO_VERSION_MASK 0x8000
117#endif
118
119/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700120static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700121/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700122static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700123/* array of features supported. Need to add a new feature
124 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
125 */
126static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800127 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800128#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700129 ,SAP32STA //5
Yathishd8713192012-12-10 14:21:35 -0800130#else
131 ,FEATURE_NOT_SUPPORTED
132#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800133#ifdef FEATURE_WLAN_TDLS
Ravi Joshi96d77342013-07-23 08:37:49 -0700134 ,TDLS //6
Yathishd8713192012-12-10 14:21:35 -0800135#else
136 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800137#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700138 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathishd8713192012-12-10 14:21:35 -0800139#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700140 ,WLANACTIVE_OFFLOAD //8
Yathishd8713192012-12-10 14:21:35 -0800141#else
142 ,FEATURE_NOT_SUPPORTED
143#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700144 ,FEATURE_NOT_SUPPORTED //9
145 ,FEATURE_NOT_SUPPORTED //10
146 ,FEATURE_NOT_SUPPORTED //11
147 ,FEATURE_NOT_SUPPORTED //12
148 ,FEATURE_NOT_SUPPORTED //13
149 ,FEATURE_NOT_SUPPORTED //14
150 ,FEATURE_NOT_SUPPORTED //15
151 ,FEATURE_NOT_SUPPORTED //16
152 ,FEATURE_NOT_SUPPORTED //17
153 ,FEATURE_NOT_SUPPORTED //18
154 ,FEATURE_NOT_SUPPORTED //19
155 ,FEATURE_NOT_SUPPORTED //20
156 ,FEATURE_NOT_SUPPORTED //21
Yue Mae2e09da2013-08-26 10:59:03 -0700157 ,WOW //22
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700158#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Mae2e09da2013-08-26 10:59:03 -0700159 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700160#else
161 ,FEATURE_NOT_SUPPORTED
162#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700163 ,FEATURE_NOT_SUPPORTED //24
164 ,FEATURE_NOT_SUPPORTED //25
165 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Mae2e09da2013-08-26 10:59:03 -0700166 ,FEATURE_NOT_SUPPORTED //27
167 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudi5aa244c2013-09-13 19:36:52 +0530168#ifdef FEATURE_WLAN_TDLS
169 ,ADVANCE_TDLS //29
170#else
171 ,FEATURE_NOT_SUPPORTED //29
172#endif
Kanchanapally, Vidyullathab55886f2013-12-24 17:28:54 +0530173 ,FEATURE_NOT_SUPPORTED //30
174 ,FW_IN_TX_PATH //31
175};
Jeff Johnson295189b2012-06-20 16:38:30 -0700176
177/*--------------------------------------------------------------------------
178 WLAN DAL State Machine
179 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700180WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700181{
182 /*WDI_INIT_ST*/
183 {{
184 WDI_MainStart, /*WDI_START_EVENT*/
185 NULL, /*WDI_STOP_EVENT*/
186 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
187 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
188 WDI_MainClose, /*WDI_CLOSE_EVENT*/
189 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
190 }},
191
192 /*WDI_STARTED_ST*/
193 {{
194 WDI_MainStartStarted, /*WDI_START_EVENT*/
195 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
196 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
197 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
198 NULL, /*WDI_CLOSE_EVENT*/
199 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
200 }},
201
202 /*WDI_STOPPED_ST*/
203 {{
204 WDI_MainStart, /*WDI_START_EVENT*/
205 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
206 NULL, /*WDI_REQUEST_EVENT*/
207 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
208 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700209 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700210 }},
211
212 /*WDI_BUSY_ST*/
213 {{
214 WDI_MainStartBusy, /*WDI_START_EVENT*/
215 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
216 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
217 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
218 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
219 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
220 }}
221};
222
Jeff Johnsone7245742012-09-05 17:12:55 -0700223/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700224 DAL Request Processing Array - the functions in this table will only be
225 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700226 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700227 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700228WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700229{
230 /*INIT*/
231 WDI_ProcessStartReq, /* WDI_START_REQ */
232 WDI_ProcessStopReq, /* WDI_STOP_REQ */
233 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
234
235 /*SCAN*/
236 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
237 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
238 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
239 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
240
241 /*ASSOCIATION*/
242 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
243 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
244 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
245 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
246 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
247
248 /* Security */
249 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
250 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
251 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
252 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
253
254 /* QoS and BA APIs */
255 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
256 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
257 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
258 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
259 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
260
261 /* Miscellaneous Control APIs */
262 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
263 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
264 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
265 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
266 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
267
268 /*BA APIs*/
269 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
270 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
271
272 /*Beacon processing APIs*/
273 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
274 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
275
276 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
277 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
278 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
279 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700280 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700281 /* PowerSave APIs */
282 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
283 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
284 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
285 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
286 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
287 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
288 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
289 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
290 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
291 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
292 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
293 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
294 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
295 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
296 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
297 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
298 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
299 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
300 /*NV Download APIs*/
301 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
302 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
303 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
304#ifdef WLAN_FEATURE_VOWIFI_11R
305 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
306#else
307 NULL,
308#endif /* WLAN_FEATURE_VOWIFI_11R */
309 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
310 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700311 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700312
313#ifdef FEATURE_OEM_DATA_SUPPORT
314 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
315#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700316 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700317#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700318 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700319
320 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700321
322#ifdef FEATURE_WLAN_SCAN_PNO
323 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
324 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
325 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
326#else
327 NULL,
328 NULL,
329 NULL,
330#endif /* FEATURE_WLAN_SCAN_PNO */
331
332 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700333
Jeff Johnson295189b2012-06-20 16:38:30 -0700334#ifdef WLAN_FEATURE_PACKET_FILTERING
335 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700336 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700337 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700338 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700339 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700340 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700341 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700342 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700343#else
344 NULL,
345 NULL,
346 NULL,
347 NULL,
348#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700349 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700350 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
351 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
352
353 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
354#ifdef FEATURE_WLAN_CCX
355 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
356#else
357 NULL,
358#endif
359
360#ifdef WLAN_FEATURE_GTK_OFFLOAD
361 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
362 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
363#else
364 NULL,
365 NULL,
366#endif // WLAN_FEATURE_GTK_OFFLOAD
367
368 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
369 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700370#ifdef WLAN_FEATURE_11AC
371 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800372#else
373 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700374#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800375#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
376 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
377#else
schangd82195a2013-03-13 18:41:24 -0700378 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800379#endif
schangd82195a2013-03-13 18:41:24 -0700380 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700381#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700382 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700383#else
384 NULL,
385#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530386#ifdef FEATURE_WLAN_TDLS
387 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
388#else
389 NULL,
390#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700391#ifdef FEATURE_WLAN_LPHB
392 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
393#else
394 NULL,
395#endif /* FEATURE_WLAN_LPHB */
Rajeev3db91f12013-10-05 11:03:42 +0530396
397#ifdef FEATURE_WLAN_BATCH_SCAN
398 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
399#else
400 NULL,
401#endif /* FEATURE_WLAN_BATCH_SCAN */
402
Arif Hussainfc753992013-08-09 15:09:58 -0700403 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
schangd82195a2013-03-13 18:41:24 -0700404 /*-------------------------------------------------------------------------
405 Indications
406 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700407 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800408 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530409 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
410 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700411#ifdef WLAN_FEATURE_11W
412 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
413#else
414 NULL,
415#endif
Yue Ma365933a2013-08-14 15:59:08 -0700416 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
417 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530418#ifdef FEATURE_WLAN_BATCH_SCAN
419 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
420 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
421#else
422 NULL,
423 NULL,
424#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -0700425 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700426};
427
428
Jeff Johnsone7245742012-09-05 17:12:55 -0700429/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700430 DAL Request Processing Array - the functions in this table will only be
431 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700432 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700433 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700434WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700435{
436 /*INIT*/
437 WDI_ProcessStartRsp, /* WDI_START_RESP */
438 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
439 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
440
441 /*SCAN*/
442 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
443 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
444 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
445 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
446
447 /* ASSOCIATION*/
448 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
449 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
450 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
451 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
452 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
453
454 /* Security */
455 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
456 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
457 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
458 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
459
460 /* QoS and BA APIs */
461 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
462 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
463 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
464 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
465 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
466
467 /* Miscellaneous Control APIs */
468 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
469 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
470 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
471 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
472 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
473
474 /* BA APIs*/
475 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
476 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700477
Jeff Johnson295189b2012-06-20 16:38:30 -0700478 /* IBSS APIs*/
479 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
480 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
481
482 /*Soft AP APIs*/
483 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
484 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
485 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
486 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
487
488 /* PowerSave APIs */
489 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
490 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
491 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
492 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
493 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
494 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
495 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
496 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
497 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
498 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
499 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
500 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
501 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
502 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
503 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
504 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
505 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
506 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700507
Jeff Johnson295189b2012-06-20 16:38:30 -0700508
509 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
510
511 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
512 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
513#ifdef WLAN_FEATURE_VOWIFI_11R
514 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
515#else
516 NULL,
517#endif /* WLAN_FEATURE_VOWIFI_11R */
518 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
519 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700520#ifdef FEATURE_OEM_DATA_SUPPORT
521 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
522#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700523 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700524#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700525 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
526
Jeff Johnson295189b2012-06-20 16:38:30 -0700527 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700528
Jeff Johnson295189b2012-06-20 16:38:30 -0700529 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700530
Jeff Johnsone7245742012-09-05 17:12:55 -0700531 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
532
Jeff Johnson295189b2012-06-20 16:38:30 -0700533#ifdef FEATURE_WLAN_SCAN_PNO
534 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
535 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
536 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
537#else
538 NULL,
539 NULL,
540 NULL,
541#endif // FEATURE_WLAN_SCAN_PNO
542
543 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
544
545 /*---------------------------------------------------------------------
546 Indications
547 ---------------------------------------------------------------------*/
548#ifdef WLAN_FEATURE_PACKET_FILTERING
549 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700550 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700551 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700552 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700553 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700554 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700555 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700556 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700557#else
558 NULL,
559 NULL,
560 NULL,
561 NULL,
562#endif // WLAN_FEATURE_PACKET_FILTERING
563
564 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
565 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
566
567 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
568#ifdef FEATURE_WLAN_CCX
569 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
570#else
571 NULL,
572#endif
573
574#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700575 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
576 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700577#else
578 NULL,
579 NULL,
580#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700581 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
582 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700583#ifdef WLAN_FEATURE_11AC
584 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700585#else
586 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700587#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800588#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
589 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
590#else
591 NULL,
592#endif
schangd82195a2013-03-13 18:41:24 -0700593 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700594#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700595 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700596#else
597 NULL,
598#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530599#ifdef FEATURE_WLAN_TDLS
600 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
601#else
602 NULL,
603#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700604#ifdef FEATURE_WLAN_LPHB
605 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
606#else
607 NULL,
608#endif /* FEATURE_WLAN_LPHB */
Rajeev3db91f12013-10-05 11:03:42 +0530609
610#ifdef FEATURE_WLAN_BATCH_SCAN
611 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
612#else
613 NULL,
614#endif /*FEATURE_WLAN_BATCH_SCAN*/
615
Jeff Johnson295189b2012-06-20 16:38:30 -0700616 /*---------------------------------------------------------------------
617 Indications
618 ---------------------------------------------------------------------*/
619 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
620 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
621 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
622 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
623 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
624 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
625
626 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
627
628 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
629
Jeff Johnson295189b2012-06-20 16:38:30 -0700630 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700631
632#ifdef FEATURE_WLAN_SCAN_PNO
633 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
634#else
635 NULL,
636#endif // FEATURE_WLAN_SCAN_PNO
637
638#ifdef WLAN_WAKEUP_EVENTS
639 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
640#else // WLAN_WAKEUP_EVENTS
641 NULL,
642#endif // WLAN_WAKEUP_EVENTS
643
644 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800645
Viral Modi9dc288a2012-12-10 13:09:21 -0800646 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530647#ifdef FEATURE_WLAN_TDLS
648 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
649#else
650 NULL,
651#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700652
653#ifdef FEATURE_WLAN_LPHB
Leo Chang8d19a5f2013-09-26 13:32:26 -0700654 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang00bc9132013-08-01 19:21:11 -0700655#else
656 NULL,
657#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -0700658
659 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Ma365933a2013-08-14 15:59:08 -0700660
661 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530662
663#ifdef FEATURE_WLAN_BATCH_SCAN
664 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
665#else
666 NULL,
667#endif
668
Leo Changd95d6622013-12-15 15:18:55 -0800669#ifdef FEATURE_WLAN_CH_AVOID
670 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
671#else
672 NULL,
673#endif /* FEATURE_WLAN_CH_AVOID */
674
Jeff Johnson295189b2012-06-20 16:38:30 -0700675};
676
677
Jeff Johnsone7245742012-09-05 17:12:55 -0700678/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700679 WLAN DAL Global Control Block
680 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700681WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700682static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
683
Jeff Johnsone7245742012-09-05 17:12:55 -0700684const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700685
686/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700687WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700688void* WDI_GET_PAL_CTX( void )
689{
Jeff Johnsone7245742012-09-05 17:12:55 -0700690 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700691}/*WDI_GET_PAL_CTX*/
692
Jeff Johnsone7245742012-09-05 17:12:55 -0700693/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700694 Helper inline converters
695 ============================================================================*/
696/*Convert WDI driver type into HAL driver type*/
697WPT_STATIC WPT_INLINE WDI_Status
698WDI_HAL_2_WDI_STATUS
699(
700 eHalStatus halStatus
701);
702
703/*Convert WDI request type into HAL request type*/
704WPT_STATIC WPT_INLINE tHalHostMsgType
705WDI_2_HAL_REQ_TYPE
706(
707 WDI_RequestEnumType wdiReqType
708);
709
710/*Convert WDI response type into HAL response type*/
711WPT_STATIC WPT_INLINE WDI_ResponseEnumType
712HAL_2_WDI_RSP_TYPE
713(
714 tHalHostMsgType halMsg
715);
716
717/*Convert WDI driver type into HAL driver type*/
718WPT_STATIC WPT_INLINE tDriverType
719WDI_2_HAL_DRV_TYPE
720(
721 WDI_DriverType wdiDriverType
722);
723
724/*Convert WDI stop reason into HAL stop reason*/
725WPT_STATIC WPT_INLINE tHalStopType
726WDI_2_HAL_STOP_REASON
727(
728 WDI_StopType wdiStopType
729);
730
731/*Convert WDI scan mode type into HAL scan mode type*/
732WPT_STATIC WPT_INLINE eHalSysMode
733WDI_2_HAL_SCAN_MODE
734(
735 WDI_ScanMode wdiScanMode
736);
737
738/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700739WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700740WDI_2_HAL_SEC_CH_OFFSET
741(
742 WDI_HTSecondaryChannelOffset wdiSecChOffset
743);
744
745/*Convert WDI BSS type into HAL BSS type*/
746WPT_STATIC WPT_INLINE tSirBssType
747WDI_2_HAL_BSS_TYPE
748(
749 WDI_BssType wdiBSSType
750);
751
752/*Convert WDI NW type into HAL NW type*/
753WPT_STATIC WPT_INLINE tSirNwType
754WDI_2_HAL_NW_TYPE
755(
756 WDI_NwType wdiNWType
757);
758
759/*Convert WDI chanel bonding type into HAL cb type*/
760WPT_STATIC WPT_INLINE ePhyChanBondState
761WDI_2_HAL_CB_STATE
762(
763 WDI_PhyChanBondState wdiCbState
764);
765
766/*Convert WDI chanel bonding type into HAL cb type*/
767WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
768WDI_2_HAL_HT_OPER_MODE
769(
770 WDI_HTOperatingMode wdiHTOperMode
771);
772
773/*Convert WDI mimo PS type into HAL mimo PS type*/
774WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
775WDI_2_HAL_MIMO_PS
776(
777 WDI_HTMIMOPowerSaveState wdiHTOperMode
778);
779
780/*Convert WDI ENC type into HAL ENC type*/
781WPT_STATIC WPT_INLINE tAniEdType
782WDI_2_HAL_ENC_TYPE
783(
784 WDI_EncryptType wdiEncType
785);
786
787/*Convert WDI WEP type into HAL WEP type*/
788WPT_STATIC WPT_INLINE tAniWepType
789WDI_2_HAL_WEP_TYPE
790(
791 WDI_WepType wdiWEPType
792);
793
794/*Convert WDI Link State into HAL Link State*/
795WPT_STATIC WPT_INLINE tSirLinkState
796WDI_2_HAL_LINK_STATE
797(
798 WDI_LinkStateType wdiLinkState
799);
800
Jeff Johnsone7245742012-09-05 17:12:55 -0700801/*Translate a STA Context from WDI into HAL*/
802WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700803void
804WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700805(
Jeff Johnson295189b2012-06-20 16:38:30 -0700806 tConfigStaParams* phalConfigSta,
807 WDI_ConfigStaReqInfoType* pwdiConfigSta
808);
Jeff Johnsone7245742012-09-05 17:12:55 -0700809
810/*Translate a Rate set info from WDI into HAL*/
811WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700812WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700813(
Jeff Johnson295189b2012-06-20 16:38:30 -0700814 tSirMacRateSet* pHalRateSet,
815 WDI_RateSet* pwdiRateSet
816);
817
818/*Translate an EDCA Parameter Record from WDI into HAL*/
819WPT_STATIC WPT_INLINE void
820WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700821(
Jeff Johnson295189b2012-06-20 16:38:30 -0700822 tSirMacEdcaParamRecord* phalEdcaParam,
823 WDI_EdcaParamRecord* pWDIEdcaParam
824);
825
826/*Copy a management frame header from WDI fmt into HAL fmt*/
827WPT_STATIC WPT_INLINE void
828WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
829(
830 tSirMacMgmtHdr* pmacMgmtHdr,
831 WDI_MacMgmtHdr* pwdiMacMgmtHdr
832);
833
834/*Copy config bss parameters from WDI fmt into HAL fmt*/
835WPT_STATIC WPT_INLINE void
836WDI_CopyWDIConfigBSSToHALConfigBSS
837(
838 tConfigBssParams* phalConfigBSS,
839 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
840);
841
Jeff Johnsone7245742012-09-05 17:12:55 -0700842/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700843 pointed to by user data */
844WPT_STATIC WPT_INLINE void
845WDI_ExtractRequestCBFromEvent
846(
847 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700848 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700849 void** ppUserData
850);
851
852wpt_uint8
853WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700854(
Jeff Johnson295189b2012-06-20 16:38:30 -0700855 WDI_ControlBlockType* pWDICtx,
856 WDI_BSSSessionType** ppSession
857);
858
859void
860WDI_AddBcastSTAtoSTATable
861(
862 WDI_ControlBlockType* pWDICtx,
863 WDI_AddStaParams * staParams,
864 wpt_uint16 usBcastStaIdx
865);
866
867WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700868(
Jeff Johnson295189b2012-06-20 16:38:30 -0700869 WDI_ControlBlockType* pWDICtx,
870 WDI_EventInfoType* pEventData
871);
872
873void
874WDI_SetPowerStateCb
875(
876 wpt_status status,
877 unsigned int dxePhyAddr,
878 void *pContext
879);
880
881#define CASE_RETURN_STRING( str ) \
882 case ( ( str ) ): return( #str ); break \
883
884/**
885 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700886
887 @param wdiReqMsgId: WDI Message request Id
888
889 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700890 @return Result of the function call
891*/
892static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
893{
894 switch (wdiReqMsgId)
895 {
896 CASE_RETURN_STRING( WDI_START_REQ );
897 CASE_RETURN_STRING( WDI_STOP_REQ );
898 CASE_RETURN_STRING( WDI_CLOSE_REQ );
899 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
900 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
901 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
902 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
903 CASE_RETURN_STRING( WDI_JOIN_REQ );
904 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
905 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
906 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
907 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
908 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
909 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
910 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
911 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
912 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
913 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
914 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
915 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
916 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
917 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
918 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
919 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
920 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
921 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
922 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
923 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
924 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
925 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
926 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
927 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
928 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
929 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussainfc753992013-08-09 15:09:58 -0700930 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700931 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530932#ifdef FEATURE_WLAN_TDLS
933 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
934#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700935 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
936 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
937 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
938 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
939 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
940 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
941 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
942 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
943 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
944 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
945 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
946 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
947 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
948 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
949 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
950 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
951 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
952 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
953 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
954 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
955 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
956 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
957 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
958 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
959 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700960 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700961 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
962 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
963 #ifdef FEATURE_WLAN_SCAN_PNO
964 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
965 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
966 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
967 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700968#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700969 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700970#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700971 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
972 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
973 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
974 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
975 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
976 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
977 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
978 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
979 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800980 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800981 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700982#ifdef WLAN_FEATURE_11W
983 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
984#endif
Rajeev3db91f12013-10-05 11:03:42 +0530985#ifdef FEATURE_WLAN_BATCH_SCAN
986 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
987 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
988 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
989#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700990 default:
991 return "Unknown WDI MessageId";
992 }
993}
994
995
996
997/**
998 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700999
1000 @param wdiRespMsgId: WDI Message response Id
1001
1002 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001003 @return Result of the function call
1004*/
1005static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1006{
1007 switch (wdiRespMsgId)
1008 {
1009 CASE_RETURN_STRING( WDI_START_RESP );
1010 CASE_RETURN_STRING( WDI_STOP_RESP );
1011 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1012 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1013 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1014 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1015 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1016 CASE_RETURN_STRING( WDI_JOIN_RESP );
1017 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1018 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1019 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1020 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1021 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1022 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1023 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1024 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1025 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1026 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1027 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1028 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1029 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1030 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1031 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1032 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1033 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1034 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1035 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1036 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1037 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1038 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1039 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1040 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1041 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1042 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1043 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05301044#ifdef FEATURE_WLAN_TDLS
1045 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1046 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1047#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001048 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1049 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1050 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1051 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1052 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1053 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1054 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1055 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1056 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1057 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1058 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1059 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1060 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1061 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1062 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1063 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1064 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1065 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1066 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1067 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1068 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1069 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1070 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1071 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1072 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001073 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001074 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1075 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1076 #ifdef FEATURE_WLAN_SCAN_PNO
1077 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1078 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1079 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1080 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001081#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001082 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001083#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001084 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1085 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1086 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1087 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1088 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1089 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1090 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1091 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001092 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev3db91f12013-10-05 11:03:42 +05301093#ifdef FEATURE_WLAN_BATCH_SCAN
1094 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1095#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001096 default:
1097 return "Unknown WDI MessageId";
1098 }
1099}
1100
1101/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301102 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1103 Capability bitmap array.
1104 @param capabilityBitmap - Base address of Bitmap array
1105 @see
1106 @returns None
1107 */
1108void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1109{
1110 int i;
1111 char capStr[512];
1112 char *pCapStr = capStr;
1113 for (i = 0; i < 32; i++) {
1114 if ((*(capabilityBitmap + 0) & (1 << i))) {
1115 switch(i) {
1116 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1117 pCapStr += strlen("MCC");
1118 break;
1119 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1120 pCapStr += strlen("P2P");
1121 break;
1122 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1123 pCapStr += strlen("DOT11AC");
1124 break;
1125 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1126 pCapStr += strlen("SLM_SESSIONIZATION");
1127 break;
1128 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1129 pCapStr += strlen("DOT11AC_OPMODE");
1130 break;
1131 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1132 pCapStr += strlen("SAP32STA");
1133 break;
1134 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1135 pCapStr += strlen("TDLS");
1136 break;
1137 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1138 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1139 break;
1140 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1141 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1142 break;
1143 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1144 pCapStr += strlen("BEACON_OFFLOAD");
1145 break;
1146 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1147 pCapStr += strlen("SCAN_OFFLOAD");
1148 break;
1149 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1150 pCapStr += strlen("ROAM_OFFLOAD");
1151 break;
1152 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1153 pCapStr += strlen("BCN_MISS_OFFLOAD");
1154 break;
1155 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1156 pCapStr += strlen("STA_POWERSAVE");
1157 break;
1158 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1159 pCapStr += strlen("AP_UAPSD");
1160 break;
1161 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1162 pCapStr += strlen("AP_DFS");
1163 break;
1164 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1165 pCapStr += strlen("BLOCKACK");
1166 break;
1167 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1168 pCapStr += strlen("PHY_ERR");
1169 break;
1170 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1171 pCapStr += strlen("BCN_FILTER");
1172 break;
1173 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1174 pCapStr += strlen("RTT");
1175 break;
1176 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1177 pCapStr += strlen("RATECTRL");
1178 break;
1179 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1180 pCapStr += strlen("WOW");
1181 break;
1182 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1183 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1184 break;
Kanchanapally, Vidyullathab55886f2013-12-24 17:28:54 +05301185 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1186 pCapStr += strlen("FW_IN_TX_PATH");
1187 break;
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301188 }
1189 *pCapStr++ = ',';
1190 *pCapStr++ = ' ';
1191 }
1192 }
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301193 pCapStr -= 2;
1194 *pCapStr = '\0';
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301195 pCapStr = capStr;
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301197}
1198
1199/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001200 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001201
1202 @param halStatusId: HAL status Id
1203
1204 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001205 @return Result of the function call
1206*/
1207static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1208{
1209 switch (halStatusId)
1210 {
1211 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1212 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1213 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1214 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1215 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1216 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1217 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1218 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1219 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1220 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1221 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1222 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1223 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1224 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1225 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1226 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1227 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1228 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1229 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1230 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1231 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1232 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1233 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1234 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1235 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1236 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1237 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1238 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1239 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1240 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1241 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1242 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1243 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1244 default:
1245 return "Unknown HAL status";
1246 }
1247}
1248
Jeff Johnsone7245742012-09-05 17:12:55 -07001249/*========================================================================
1250
Jeff Johnson295189b2012-06-20 16:38:30 -07001251 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001252
Jeff Johnson295189b2012-06-20 16:38:30 -07001253==========================================================================*/
1254
1255/**
1256 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001257
Jeff Johnson295189b2012-06-20 16:38:30 -07001258 DAL will allocate all the resources it needs. It will open PAL, it will also
1259 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001260 DXE/SMD or any other drivers that they need.
1261
Jeff Johnson295189b2012-06-20 16:38:30 -07001262 @param pOSContext: pointer to the OS context provided by the UMAC
1263 will be passed on to PAL on Open
1264 ppWDIGlobalCtx: output pointer of Global Context
1265 pWdiDevCapability: output pointer of device capability
1266
1267 @return Result of the function call
1268*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001269WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001270WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001271(
Jeff Johnson295189b2012-06-20 16:38:30 -07001272 void* pOSContext,
1273 void** ppWDIGlobalCtx,
1274 WDI_DeviceCapabilityType* pWdiDevCapability,
1275 unsigned int driverType
1276)
1277{
1278 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001279 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001280 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001281 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1283
1284 /*---------------------------------------------------------------------
1285 Sanity check
1286 ---------------------------------------------------------------------*/
1287 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1288 {
1289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1290 "Invalid input parameters in WDI_Init");
1291
Jeff Johnsone7245742012-09-05 17:12:55 -07001292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001293 }
1294
1295 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001296 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001297 ---------------------------------------------------------------------*/
1298 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1299 {
1300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1301 "WDI module already initialized - return");
1302
Jeff Johnsone7245742012-09-05 17:12:55 -07001303 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001304 }
1305
1306 /*Module is now initialized - this flag is to ensure the fact that multiple
1307 init will not happen on WDI
1308 !! - potential race does exist because read and set are not atomic,
1309 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001310 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001311
1312 /*Setup the control block */
1313 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001314 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001315
1316 /*Setup the STA Table*/
1317 wdiStatus = WDI_STATableInit(&gWDICb);
1318 if ( WDI_STATUS_SUCCESS != wdiStatus )
1319 {
1320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1321 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001322 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001323 goto fail_STATableInit;
1324 }
1325
1326 /*------------------------------------------------------------------------
1327 Open the PAL
1328 ------------------------------------------------------------------------*/
1329 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1330 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1331 {
1332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1333 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001334 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001335 goto fail_wpalOpen;
1336 }
1337
1338 /*Initialize main synchro mutex - it will be used to ensure integrity of
1339 the main WDI Control Block*/
1340 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1341 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1342 {
1343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1344 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001345 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001346 goto fail_mutex;
1347 }
1348
1349 /*Initialize the response timer - it will be used to time all messages
1350 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001351 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1352 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001353 &gWDICb);
1354 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1355 {
1356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1357 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001358 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001359 goto fail_timer;
1360 }
1361
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001362 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1363 WDI_SsrTimerCB,
1364 &gWDICb);
1365 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1366 {
1367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1368 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001369 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001370 goto fail_timer2;
1371 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001372 /* Initialize the WDI Pending Request Queue*/
1373 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1374 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1375 {
1376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1377 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001378 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001379 goto fail_pend_queue;
1380 }
1381
1382 /*Init WDI Pending Assoc Id Queue */
1383 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1384 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1385 {
1386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1387 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001388 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001389 goto fail_assoc_queue;
1390 }
1391
1392 /*Initialize the BSS sessions pending Queue */
1393 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1394 {
1395 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1396 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1397 {
1398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1399 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001400 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001401 goto fail_bss_queue;
1402 }
1403 }
1404
1405 /*Indicate the control block is sufficiently initialized for callbacks*/
1406 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1407
1408 /*------------------------------------------------------------------------
1409 Initialize the Data Path Utility Module
1410 ------------------------------------------------------------------------*/
1411 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1412 if ( WDI_STATUS_SUCCESS != wdiStatus )
1413 {
1414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1415 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001416 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001417 goto fail_dp_util_init;
1418 }
1419
1420 /* Init Set power state event */
1421 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001422 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001423 {
1424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1425 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001426 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001427 goto fail_power_event;
1428 }
1429
1430 /* Init WCTS action event */
1431 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001432 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001433 {
1434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1435 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001436 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001437 goto fail_wcts_event;
1438 }
1439
1440 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001441 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001442 ------------------------------------------------------------------------*/
1443 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1444 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001445 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001446 wctsCBs.wctsRxMsgCBData = &gWDICb;
1447
Jeff Johnsone7245742012-09-05 17:12:55 -07001448 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001449 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001450 WDI_CT_CHANNEL_SIZE,
1451 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001452
1453 if ( NULL == gWDICb.wctsHandle )
1454 {
1455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001456 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001457 goto fail_wcts_open;
1458 }
1459
1460 gWDICb.driverMode = (tDriverType)driverType;
1461 /* FTM mode not need to open Transport Driver */
1462 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001463 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001464 /*------------------------------------------------------------------------
1465 Open the Data Transport
1466 ------------------------------------------------------------------------*/
1467 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1468 {
1469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001470 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001471 goto fail_wdts_open;
1472 }
1473 }
1474
1475 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001476 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001477
1478 /*Send the context as a ptr to the global WDI Control Block*/
1479 *ppWDIGlobalCtx = &gWDICb;
1480
1481 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001482 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001483 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1484 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1485 return WDI_STATUS_SUCCESS;
1486
1487 /* ERROR handlers
1488 Undo everything that completed successfully */
1489
1490 fail_wdts_open:
1491 {
1492 wpt_status eventStatus;
1493
1494 /* Closing WCTS in this scenario is tricky since it has to close
1495 the SMD channel and then we get notified asynchronously when
1496 the channel has been closed. So we take some of the logic from
1497 the "normal" close procedure in WDI_Close()
1498 */
1499
1500 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001501 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001502 {
1503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001504 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001505 }
1506
1507 WCTS_CloseTransport(gWDICb.wctsHandle);
1508
1509 /* Wait for WCTS to close the control transport. If we were able
1510 to reset the event flag, then we'll wait for the event,
1511 otherwise we'll wait for a maximum amount of time required for
1512 the channel to be closed */
1513 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1514 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001515 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001516 WDI_WCTS_ACTION_TIMEOUT);
1517 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1518 {
1519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001520 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001521 }
1522 }
1523 else
1524 {
1525 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1526 }
1527 }
1528 fail_wcts_open:
1529 wpalEventDelete(&gWDICb.wctsActionEvent);
1530 fail_wcts_event:
1531 wpalEventDelete(&gWDICb.setPowerStateEvent);
1532 fail_power_event:
1533 WDI_DP_UtilsExit(&gWDICb);
1534 fail_dp_util_init:
1535 gWDICb.magic = 0;
1536 fail_bss_queue:
1537 /* entries 0 thru i-1 were successfully initialized */
1538 while (0 < i)
1539 {
1540 i--;
1541 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1542 }
1543 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1544 fail_assoc_queue:
1545 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1546 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001547 wpalTimerDelete(&gWDICb.ssrTimer);
1548 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001549 wpalTimerDelete(&gWDICb.wptResponseTimer);
1550 fail_timer:
1551 wpalMutexDelete(&gWDICb.wptMutex);
1552 fail_mutex:
1553 wpalClose(gWDICb.pPALContext);
1554 fail_wpalOpen:
1555 WDI_STATableClose(&gWDICb);
1556 fail_STATableInit:
1557 gWDIInitialized = eWLAN_PAL_FALSE;
1558
1559 return WDI_STATUS_E_FAILURE;
1560
1561}/*WDI_Init*/;
1562
1563/**
1564 @brief WDI_Start will be called when the upper MAC is ready to
1565 commence operation with the WLAN Device. Upon the call
1566 of this API the WLAN DAL will pack and send a HAL Start
1567 message to the lower RIVA sub-system if the SMD channel
1568 has been fully opened and the RIVA subsystem is up.
1569
1570 If the RIVA sub-system is not yet up and running DAL
1571 will queue the request for Open and will wait for the
1572 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001573 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001574
1575 WDI_Init must have been called.
1576
Jeff Johnsone7245742012-09-05 17:12:55 -07001577 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001578 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001579
Jeff Johnson295189b2012-06-20 16:38:30 -07001580 wdiStartRspCb: callback for passing back the response of
1581 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001582
Jeff Johnson295189b2012-06-20 16:38:30 -07001583 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001584 callback
1585
Jeff Johnson295189b2012-06-20 16:38:30 -07001586 @see WDI_Start
1587 @return Result of the function call
1588*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001589WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001590WDI_Start
1591(
1592 WDI_StartReqParamsType* pwdiStartParams,
1593 WDI_StartRspCb wdiStartRspCb,
1594 void* pUserData
1595)
1596{
1597 WDI_EventInfoType wdiEventData;
1598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1599
1600 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001601 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 ------------------------------------------------------------------------*/
1603 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1604 {
1605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1606 "WDI API call before module is initialized - Fail request");
1607
Jeff Johnsone7245742012-09-05 17:12:55 -07001608 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001609 }
1610
1611 /*------------------------------------------------------------------------
1612 Fill in Event data and post to the Main FSM
1613 ------------------------------------------------------------------------*/
1614 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001615 wdiEventData.pEventData = pwdiStartParams;
1616 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1617 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001618 wdiEventData.pUserData = pUserData;
1619
1620 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1621
1622}/*WDI_Start*/
1623
1624/**
1625 @brief WDI_Stop will be called when the upper MAC is ready to
1626 stop any operation with the WLAN Device. Upon the call
1627 of this API the WLAN DAL will pack and send a HAL Stop
1628 message to the lower RIVA sub-system if the DAL Core is
1629 in started state.
1630
1631 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001632
1633 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001634
1635 WDI_Start must have been called.
1636
Jeff Johnsone7245742012-09-05 17:12:55 -07001637 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001638 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001639
Jeff Johnson295189b2012-06-20 16:38:30 -07001640 wdiStopRspCb: callback for passing back the response of
1641 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001642
Jeff Johnson295189b2012-06-20 16:38:30 -07001643 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001644 callback
1645
Jeff Johnson295189b2012-06-20 16:38:30 -07001646 @see WDI_Start
1647 @return Result of the function call
1648*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001649WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001650WDI_Stop
1651(
1652 WDI_StopReqParamsType* pwdiStopParams,
1653 WDI_StopRspCb wdiStopRspCb,
1654 void* pUserData
1655)
1656{
1657 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001658 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1660
1661 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001662 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001663 ------------------------------------------------------------------------*/
1664 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1665 {
1666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1667 "WDI API call before module is initialized - Fail request");
1668
Jeff Johnsone7245742012-09-05 17:12:55 -07001669 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001670 }
1671
Jeff Johnson43971f52012-07-17 12:26:56 -07001672 /*Access to the global state must be locked before cleaning */
1673 wpalMutexAcquire(&pWDICtx->wptMutex);
1674
1675 /*Clear all pending request*/
1676 WDI_ClearPendingRequests(pWDICtx);
1677
1678 /*We have completed cleaning unlock now*/
1679 wpalMutexRelease(&pWDICtx->wptMutex);
1680
Jeff Johnson295189b2012-06-20 16:38:30 -07001681 /* Free the global variables */
1682 wpalMemoryFree(gpHostWlanFeatCaps);
1683 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001684 gpHostWlanFeatCaps = NULL;
1685 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001686
1687 /*------------------------------------------------------------------------
1688 Fill in Event data and post to the Main FSM
1689 ------------------------------------------------------------------------*/
1690 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001691 wdiEventData.pEventData = pwdiStopParams;
1692 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1693 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001694 wdiEventData.pUserData = pUserData;
1695
1696 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1697
1698}/*WDI_Stop*/
1699
1700
1701
1702/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001703 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001704 needs to interact with DAL. DAL will free its control
1705 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001706
1707 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001708
1709 WDI_Stop must have been called.
1710
1711 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001712
Jeff Johnson295189b2012-06-20 16:38:30 -07001713 @see WDI_Stop
1714 @return Result of the function call
1715*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001716WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001717WDI_Close
1718(
1719 void
1720)
1721{
1722 wpt_uint8 i;
1723 WDI_EventInfoType wdiEventData;
1724 wpt_status wptStatus;
1725 wpt_status eventStatus;
1726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1727
1728 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001729 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001730 ------------------------------------------------------------------------*/
1731 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1732 {
1733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1734 "WDI API call before module is initialized - Fail request");
1735
Jeff Johnsone7245742012-09-05 17:12:55 -07001736 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001737 }
1738
1739 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1740 (the control transport will be closed by the FSM and we'll want
1741 to wait until that completes)*/
1742 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001743 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 {
1745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001746 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 /* fall through and try to finish closing via the FSM */
1748 }
1749
1750 /*------------------------------------------------------------------------
1751 Fill in Event data and post to the Main FSM
1752 ------------------------------------------------------------------------*/
1753 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001754 wdiEventData.pEventData = NULL;
1755 wdiEventData.uEventDataSize = 0;
1756 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001757 wdiEventData.pUserData = NULL;
1758
1759 gWDIInitialized = eWLAN_PAL_FALSE;
1760
1761 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1762
1763 /*Wait for WCTS to close the control transport
1764 (but only if we were able to reset the event flag*/
1765 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1766 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001767 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001768 WDI_WCTS_ACTION_TIMEOUT);
1769 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1770 {
1771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001772 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001773 }
1774 }
1775
1776 /* Destroy the WCTS action event */
1777 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1778 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1779 {
1780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1781 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001782 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001783 }
1784
1785 /* Destroy the Set Power State event */
1786 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1787 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1788 {
1789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1790 "WDI Close failed to destroy an event");
1791
Jeff Johnsone7245742012-09-05 17:12:55 -07001792 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001793 }
1794
1795 /*------------------------------------------------------------------------
1796 Closes the Data Path Utility Module
1797 ------------------------------------------------------------------------*/
1798 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1799 {
1800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1801 "WDI Init failed to close the DP Util Module");
1802
Jeff Johnsone7245742012-09-05 17:12:55 -07001803 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001804 }
1805
1806 /*destroy the BSS sessions pending Queue */
1807 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1808 {
1809 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1810 }
1811
1812 /* destroy the WDI Pending Assoc Id Request Queue*/
1813 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1814
1815 /* destroy the WDI Pending Request Queue*/
1816 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001817
Jeff Johnson295189b2012-06-20 16:38:30 -07001818 /*destroy the response timer */
1819 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1820
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001821 /*destroy the SSR timer */
1822 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1823
Jeff Johnson295189b2012-06-20 16:38:30 -07001824 /*invalidate the main synchro mutex */
1825 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1826 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1827 {
1828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1829 "Failed to delete mutex %d", wptStatus);
1830 WDI_ASSERT(0);
1831 }
1832
1833 /*Clear control block. note that this will clear the "magic"
1834 which will inhibit all asynchronous callbacks*/
1835 WDI_CleanCB(&gWDICb);
1836
1837 return wptStatus;
1838
1839}/*WDI_Close*/
1840
1841/**
1842 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1843 This will do most of the WDI stop & close
1844 operations without doing any handshake with Riva
1845
1846 This will also make sure that the control transport
1847 will NOT be closed.
1848
1849 This request will not be queued.
1850
1851
1852 WDI_Start must have been called.
1853
1854 @param closeTransport: Close control channel if this is set
1855
1856 @return Result of the function call
1857*/
1858WDI_Status
1859WDI_Shutdown
1860(
1861 wpt_boolean closeTransport
1862)
1863{
1864 WDI_EventInfoType wdiEventData;
1865 wpt_status wptStatus;
1866 int i = 0;
1867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1868
1869 /*------------------------------------------------------------------------
1870 Sanity Check
1871 ------------------------------------------------------------------------*/
1872 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1873 {
1874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1875 "WDI API call before module is initialized - Fail request");
1876
1877 return WDI_STATUS_E_NOT_ALLOWED;
1878 }
1879
1880 /*------------------------------------------------------------------------
1881 Fill in Event data and post to the Main FSM
1882 ------------------------------------------------------------------------*/
1883 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1884 wdiEventData.pEventData = NULL;
1885 wdiEventData.uEventDataSize = 0;
1886
1887 /* Shutdown will not be queued, if the state is busy timer will be
1888 * stopped & this message will be processed.*/
1889 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1890 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1891 {
1892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001893 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001894 }
1895 /* Destroy the Set Power State event */
1896 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1897 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1898 {
1899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1900 "WDI Close failed to destroy an event");
1901
1902 WDI_ASSERT(0);
1903 }
1904 /*------------------------------------------------------------------------
1905 Closes the Data Path Utility Module
1906 ------------------------------------------------------------------------*/
1907 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1908 {
1909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1910 "WDI Init failed to close the DP Util Module");
1911
1912 WDI_ASSERT(0);
1913 }
1914 if ( closeTransport )
1915 {
1916 /* Close control transport, called from module unload */
1917 WCTS_CloseTransport(gWDICb.wctsHandle);
1918 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001919 else
1920 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001921 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001922 the pending messages in the transport queue */
1923 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1924 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001925 /*destroy the BSS sessions pending Queue */
1926 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1927 {
1928 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1929 }
1930
1931 /* destroy the WDI Pending Assoc Id Request Queue*/
1932 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1933 /* destroy the WDI Pending Request Queue*/
1934 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1935 /*destroy the response timer */
1936 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001937 /*destroy the SSR timer */
1938 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001939
1940 /*invalidate the main synchro mutex */
1941 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1942 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1943 {
1944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001945 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001946 WDI_ASSERT(0);
1947 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001948 /* Free the global variables */
1949 wpalMemoryFree(gpHostWlanFeatCaps);
1950 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001951 gpHostWlanFeatCaps = NULL;
1952 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001953 /*Clear control block. note that this will clear the "magic"
1954 which will inhibit all asynchronous callbacks*/
1955 WDI_CleanCB(&gWDICb);
1956 return wptStatus;
1957
1958}/*WDI_Shutdown*/
1959
1960
Jeff Johnsone7245742012-09-05 17:12:55 -07001961/*========================================================================
1962
Jeff Johnson295189b2012-06-20 16:38:30 -07001963 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001964
Jeff Johnson295189b2012-06-20 16:38:30 -07001965==========================================================================*/
1966
1967/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001968 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001969 the WLAN Device to get ready for a scan procedure. Upon
1970 the call of this API the WLAN DAL will pack and send a
1971 HAL Init Scan request message to the lower RIVA
1972 sub-system if DAL is in state STARTED.
1973
1974 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001975 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001976
1977 WDI_Start must have been called.
1978
1979 @param wdiInitScanParams: the init scan parameters as specified
1980 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001981
Jeff Johnson295189b2012-06-20 16:38:30 -07001982 wdiInitScanRspCb: callback for passing back the response
1983 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001984
Jeff Johnson295189b2012-06-20 16:38:30 -07001985 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001986 callback
1987
Jeff Johnson295189b2012-06-20 16:38:30 -07001988 @see WDI_Start
1989 @return Result of the function call
1990*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001991WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001992WDI_InitScanReq
1993(
1994 WDI_InitScanReqParamsType* pwdiInitScanParams,
1995 WDI_InitScanRspCb wdiInitScanRspCb,
1996 void* pUserData
1997)
1998{
1999 WDI_EventInfoType wdiEventData;
2000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2001
2002 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002003 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002004 ------------------------------------------------------------------------*/
2005 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2006 {
2007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2008 "WDI API call before module is initialized - Fail request");
2009
Jeff Johnsone7245742012-09-05 17:12:55 -07002010 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002011 }
2012
2013 /*------------------------------------------------------------------------
2014 Fill in Event data and post to the Main FSM
2015 ------------------------------------------------------------------------*/
2016 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002017 wdiEventData.pEventData = pwdiInitScanParams;
2018 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2019 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002020 wdiEventData.pUserData = pUserData;
2021
2022 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2023
2024}/*WDI_InitScanReq*/
2025
2026/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002027 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 wishes to change the Scan channel on the WLAN Device.
2029 Upon the call of this API the WLAN DAL will pack and
2030 send a HAL Start Scan request message to the lower RIVA
2031 sub-system if DAL is in state STARTED.
2032
2033 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002034 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002035
2036 WDI_InitScanReq must have been called.
2037
Jeff Johnsone7245742012-09-05 17:12:55 -07002038 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002039 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002040
Jeff Johnson295189b2012-06-20 16:38:30 -07002041 wdiStartScanRspCb: callback for passing back the
2042 response of the start scan operation received from the
2043 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002044
Jeff Johnson295189b2012-06-20 16:38:30 -07002045 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002046 callback
2047
Jeff Johnson295189b2012-06-20 16:38:30 -07002048 @see WDI_InitScanReq
2049 @return Result of the function call
2050*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002051WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002052WDI_StartScanReq
2053(
2054 WDI_StartScanReqParamsType* pwdiStartScanParams,
2055 WDI_StartScanRspCb wdiStartScanRspCb,
2056 void* pUserData
2057)
2058{
2059 WDI_EventInfoType wdiEventData;
2060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2061
2062 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002063 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002064 ------------------------------------------------------------------------*/
2065 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2066 {
2067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2068 "WDI API call before module is initialized - Fail request");
2069
Jeff Johnsone7245742012-09-05 17:12:55 -07002070 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002071 }
2072
2073 /*------------------------------------------------------------------------
2074 Fill in Event data and post to the Main FSM
2075 ------------------------------------------------------------------------*/
2076 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002077 wdiEventData.pEventData = pwdiStartScanParams;
2078 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2079 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002080 wdiEventData.pUserData = pUserData;
2081
2082 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2083
2084}/*WDI_StartScanReq*/
2085
2086
2087/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002088 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002089 wants to end scanning for a particular channel that it
2090 had set before by calling Scan Start on the WLAN Device.
2091 Upon the call of this API the WLAN DAL will pack and
2092 send a HAL End Scan request message to the lower RIVA
2093 sub-system if DAL is in state STARTED.
2094
2095 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002096 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002097
2098 WDI_StartScanReq must have been called.
2099
Jeff Johnsone7245742012-09-05 17:12:55 -07002100 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002101 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002102
Jeff Johnson295189b2012-06-20 16:38:30 -07002103 wdiEndScanRspCb: callback for passing back the response
2104 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002105
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002107 callback
2108
Jeff Johnson295189b2012-06-20 16:38:30 -07002109 @see WDI_StartScanReq
2110 @return Result of the function call
2111*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002112WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002113WDI_EndScanReq
2114(
2115 WDI_EndScanReqParamsType* pwdiEndScanParams,
2116 WDI_EndScanRspCb wdiEndScanRspCb,
2117 void* pUserData
2118)
2119{
2120 WDI_EventInfoType wdiEventData;
2121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2122
2123 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002124 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002125 ------------------------------------------------------------------------*/
2126 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2127 {
2128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2129 "WDI API call before module is initialized - Fail request");
2130
Jeff Johnsone7245742012-09-05 17:12:55 -07002131 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002132 }
2133
2134 /*------------------------------------------------------------------------
2135 Fill in Event data and post to the Main FSM
2136 ------------------------------------------------------------------------*/
2137 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002138 wdiEventData.pEventData = pwdiEndScanParams;
2139 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2140 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002141 wdiEventData.pUserData = pUserData;
2142
2143 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2144
2145}/*WDI_EndScanReq*/
2146
2147
2148/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002149 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002150 completed the scan process on the WLAN Device. Upon the
2151 call of this API the WLAN DAL will pack and send a HAL
2152 Finish Scan Request request message to the lower RIVA
2153 sub-system if DAL is in state STARTED.
2154
2155 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002156 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002157
2158 WDI_InitScanReq must have been called.
2159
Jeff Johnsone7245742012-09-05 17:12:55 -07002160 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002161 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002162
Jeff Johnson295189b2012-06-20 16:38:30 -07002163 wdiFinishScanRspCb: callback for passing back the
2164 response of the finish scan operation received from the
2165 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002166
Jeff Johnson295189b2012-06-20 16:38:30 -07002167 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002168 callback
2169
Jeff Johnson295189b2012-06-20 16:38:30 -07002170 @see WDI_InitScanReq
2171 @return Result of the function call
2172*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002173WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002174WDI_FinishScanReq
2175(
2176 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2177 WDI_FinishScanRspCb wdiFinishScanRspCb,
2178 void* pUserData
2179)
2180{
2181 WDI_EventInfoType wdiEventData;
2182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2183
2184 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002185 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002186 ------------------------------------------------------------------------*/
2187 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2188 {
2189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2190 "WDI API call before module is initialized - Fail request");
2191
Jeff Johnsone7245742012-09-05 17:12:55 -07002192 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002193 }
2194
2195 /*------------------------------------------------------------------------
2196 Fill in Event data and post to the Main FSM
2197 ------------------------------------------------------------------------*/
2198 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002199 wdiEventData.pEventData = pwdiFinishScanParams;
2200 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2201 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002202 wdiEventData.pUserData = pUserData;
2203
2204 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2205
2206}/*WDI_FinishScanReq*/
2207
Jeff Johnsone7245742012-09-05 17:12:55 -07002208/*========================================================================
2209
Jeff Johnson295189b2012-06-20 16:38:30 -07002210 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002211
Jeff Johnson295189b2012-06-20 16:38:30 -07002212==========================================================================*/
2213
2214/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002215 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002216 to start an association procedure to a BSS. Upon the
2217 call of this API the WLAN DAL will pack and send a HAL
2218 Join request message to the lower RIVA sub-system if
2219 DAL is in state STARTED.
2220
2221 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002222 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002223
2224 WDI_Start must have been called.
2225
Jeff Johnsone7245742012-09-05 17:12:55 -07002226 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002227 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002228
Jeff Johnson295189b2012-06-20 16:38:30 -07002229 wdiJoinRspCb: callback for passing back the response of
2230 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002231
Jeff Johnson295189b2012-06-20 16:38:30 -07002232 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002233 callback
2234
Jeff Johnson295189b2012-06-20 16:38:30 -07002235 @see WDI_Start
2236 @return Result of the function call
2237*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002238WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002239WDI_JoinReq
2240(
2241 WDI_JoinReqParamsType* pwdiJoinParams,
2242 WDI_JoinRspCb wdiJoinRspCb,
2243 void* pUserData
2244)
2245{
2246 WDI_EventInfoType wdiEventData;
2247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2248
2249 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002250 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002251 ------------------------------------------------------------------------*/
2252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2253 {
2254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2255 "WDI API call before module is initialized - Fail request");
2256
Jeff Johnsone7245742012-09-05 17:12:55 -07002257 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002258 }
2259
2260 /*------------------------------------------------------------------------
2261 Fill in Event data and post to the Main FSM
2262 ------------------------------------------------------------------------*/
2263 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002264 wdiEventData.pEventData = pwdiJoinParams;
2265 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2266 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002267 wdiEventData.pUserData = pUserData;
2268
2269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2270
2271}/*WDI_JoinReq*/
2272
2273/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002274 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002275 wishes to configure the newly acquired or in process of
2276 being acquired BSS to the HW . Upon the call of this API
2277 the WLAN DAL will pack and send a HAL Config BSS request
2278 message to the lower RIVA sub-system if DAL is in state
2279 STARTED.
2280
2281 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002282 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002283
2284 WDI_JoinReq must have been called.
2285
Jeff Johnsone7245742012-09-05 17:12:55 -07002286 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002287 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002288
Jeff Johnson295189b2012-06-20 16:38:30 -07002289 wdiConfigBSSRspCb: callback for passing back the
2290 response of the config BSS operation received from the
2291 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002292
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002294 callback
2295
Jeff Johnson295189b2012-06-20 16:38:30 -07002296 @see WDI_JoinReq
2297 @return Result of the function call
2298*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002299WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002300WDI_ConfigBSSReq
2301(
2302 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2303 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2304 void* pUserData
2305)
2306{
2307 WDI_EventInfoType wdiEventData;
2308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2309
2310 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002311 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002312 ------------------------------------------------------------------------*/
2313 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2314 {
2315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2316 "WDI API call before module is initialized - Fail request");
2317
Jeff Johnsone7245742012-09-05 17:12:55 -07002318 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002319 }
2320
2321 /*------------------------------------------------------------------------
2322 Fill in Event data and post to the Main FSM
2323 ------------------------------------------------------------------------*/
2324 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002325 wdiEventData.pEventData = pwdiConfigBSSParams;
2326 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2327 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002328 wdiEventData.pUserData = pUserData;
2329
2330 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2331
2332}/*WDI_ConfigBSSReq*/
2333
2334/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002335 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002336 disassociating from the BSS and wishes to notify HW.
2337 Upon the call of this API the WLAN DAL will pack and
2338 send a HAL Del BSS request message to the lower RIVA
2339 sub-system if DAL is in state STARTED.
2340
2341 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002342 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002343
2344 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2345
Jeff Johnsone7245742012-09-05 17:12:55 -07002346 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002347 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002348
Jeff Johnson295189b2012-06-20 16:38:30 -07002349 wdiDelBSSRspCb: callback for passing back the response
2350 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002351
Jeff Johnson295189b2012-06-20 16:38:30 -07002352 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002353 callback
2354
2355 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002356 @return Result of the function call
2357*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002358WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002359WDI_DelBSSReq
2360(
2361 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2362 WDI_DelBSSRspCb wdiDelBSSRspCb,
2363 void* pUserData
2364)
2365{
2366 WDI_EventInfoType wdiEventData;
2367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2368
2369 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002370 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002371 ------------------------------------------------------------------------*/
2372 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2373 {
2374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2375 "WDI API call before module is initialized - Fail request");
2376
Jeff Johnsone7245742012-09-05 17:12:55 -07002377 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002378 }
2379
2380 /*------------------------------------------------------------------------
2381 Fill in Event data and post to the Main FSM
2382 ------------------------------------------------------------------------*/
2383 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002384 wdiEventData.pEventData = pwdiDelBSSParams;
2385 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2386 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002387 wdiEventData.pUserData = pUserData;
2388
2389 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2390
2391}/*WDI_DelBSSReq*/
2392
2393/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002394 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002395 associated to a BSS and wishes to configure HW for
2396 associated state. Upon the call of this API the WLAN DAL
2397 will pack and send a HAL Post Assoc request message to
2398 the lower RIVA sub-system if DAL is in state STARTED.
2399
2400 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002401 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002402
2403 WDI_JoinReq must have been called.
2404
2405 @param wdiPostAssocReqParams: the assoc parameters as specified
2406 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002407
Jeff Johnson295189b2012-06-20 16:38:30 -07002408 wdiPostAssocRspCb: callback for passing back the
2409 response of the post assoc operation received from the
2410 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002411
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002413 callback
2414
Jeff Johnson295189b2012-06-20 16:38:30 -07002415 @see WDI_JoinReq
2416 @return Result of the function call
2417*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002418WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002419WDI_PostAssocReq
2420(
2421 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2422 WDI_PostAssocRspCb wdiPostAssocRspCb,
2423 void* pUserData
2424)
2425{
2426 WDI_EventInfoType wdiEventData;
2427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2428
2429 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002430 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002431 ------------------------------------------------------------------------*/
2432 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2433 {
2434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2435 "WDI API call before module is initialized - Fail request");
2436
Jeff Johnsone7245742012-09-05 17:12:55 -07002437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002438 }
2439
2440 /*------------------------------------------------------------------------
2441 Fill in Event data and post to the Main FSM
2442 ------------------------------------------------------------------------*/
2443 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002444 wdiEventData.pEventData = pwdiPostAssocReqParams;
2445 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2446 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002447 wdiEventData.pUserData = pUserData;
2448
2449 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2450
2451}/*WDI_PostAssocReq*/
2452
2453/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002454 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002455 association with another STA has ended and the station
2456 must be deleted from HW. Upon the call of this API the
2457 WLAN DAL will pack and send a HAL Del STA request
2458 message to the lower RIVA sub-system if DAL is in state
2459 STARTED.
2460
2461 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002462 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002463
2464 WDI_PostAssocReq must have been called.
2465
Jeff Johnsone7245742012-09-05 17:12:55 -07002466 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002467 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002468
Jeff Johnson295189b2012-06-20 16:38:30 -07002469 wdiDelSTARspCb: callback for passing back the response
2470 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002471
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002473 callback
2474
Jeff Johnson295189b2012-06-20 16:38:30 -07002475 @see WDI_PostAssocReq
2476 @return Result of the function call
2477*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002478WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002479WDI_DelSTAReq
2480(
2481 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2482 WDI_DelSTARspCb wdiDelSTARspCb,
2483 void* pUserData
2484)
2485{
2486 WDI_EventInfoType wdiEventData;
2487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2488
2489 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002491 ------------------------------------------------------------------------*/
2492 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2493 {
2494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2495 "WDI API call before module is initialized - Fail request");
2496
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002498 }
2499
2500 /*------------------------------------------------------------------------
2501 Fill in Event data and post to the Main FSM
2502 ------------------------------------------------------------------------*/
2503 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002504 wdiEventData.pEventData = pwdiDelSTAParams;
2505 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2506 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002507 wdiEventData.pUserData = pUserData;
2508
2509 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2510
2511}/*WDI_DelSTAReq*/
2512
Jeff Johnsone7245742012-09-05 17:12:55 -07002513/*========================================================================
2514
Jeff Johnson295189b2012-06-20 16:38:30 -07002515 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002516
Jeff Johnson295189b2012-06-20 16:38:30 -07002517==========================================================================*/
2518
2519/**
2520 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2521 install a BSS encryption key on the HW. Upon the call of this
2522 API the WLAN DAL will pack and send a Set BSS Key request
2523 message to the lower RIVA sub-system if DAL is in state
2524 STARTED.
2525
2526 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002527 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002528
2529 WDI_PostAssocReq must have been called.
2530
Jeff Johnsone7245742012-09-05 17:12:55 -07002531 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002532 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002533
Jeff Johnson295189b2012-06-20 16:38:30 -07002534 wdiSetBSSKeyRspCb: callback for passing back the
2535 response of the set BSS Key operation received from the
2536 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002537
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002539 callback
2540
Jeff Johnson295189b2012-06-20 16:38:30 -07002541 @see WDI_PostAssocReq
2542 @return Result of the function call
2543*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002544WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002545WDI_SetBSSKeyReq
2546(
2547 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2548 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2549 void* pUserData
2550)
2551{
2552 WDI_EventInfoType wdiEventData;
2553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2554
2555 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002556 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002557 ------------------------------------------------------------------------*/
2558 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2559 {
2560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2561 "WDI API call before module is initialized - Fail request");
2562
Jeff Johnsone7245742012-09-05 17:12:55 -07002563 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002564 }
2565
2566 /*------------------------------------------------------------------------
2567 Fill in Event data and post to the Main FSM
2568 ------------------------------------------------------------------------*/
2569 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002570 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2571 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2572 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 wdiEventData.pUserData = pUserData;
2574
2575 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2576
2577}/*WDI_SetBSSKeyReq*/
2578
2579/**
2580 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2581 uninstall a BSS key from HW. Upon the call of this API the
2582 WLAN DAL will pack and send a HAL Remove BSS Key request
2583 message to the lower RIVA sub-system if DAL is in state
2584 STARTED.
2585
2586 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002587 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002588
2589 WDI_SetBSSKeyReq must have been called.
2590
Jeff Johnsone7245742012-09-05 17:12:55 -07002591 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002592 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 wdiRemoveBSSKeyRspCb: callback for passing back the
2595 response of the remove BSS key operation received from
2596 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002597
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002599 callback
2600
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 @see WDI_SetBSSKeyReq
2602 @return Result of the function call
2603*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002604WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002605WDI_RemoveBSSKeyReq
2606(
2607 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2608 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2609 void* pUserData
2610)
2611{
2612 WDI_EventInfoType wdiEventData;
2613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2614
2615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002617 ------------------------------------------------------------------------*/
2618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2619 {
2620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2621 "WDI API call before module is initialized - Fail request");
2622
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002624 }
2625
2626 /*------------------------------------------------------------------------
2627 Fill in Event data and post to the Main FSM
2628 ------------------------------------------------------------------------*/
2629 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002630 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2631 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2632 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002633 wdiEventData.pUserData = pUserData;
2634
2635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2636
2637}/*WDI_RemoveBSSKeyReq*/
2638
2639
2640/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 ready to install a STA(ast) encryption key in HW. Upon
2643 the call of this API the WLAN DAL will pack and send a
2644 HAL Set STA Key request message to the lower RIVA
2645 sub-system if DAL is in state STARTED.
2646
2647 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002649
2650 WDI_PostAssocReq must have been called.
2651
Jeff Johnsone7245742012-09-05 17:12:55 -07002652 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002653 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002654
Jeff Johnson295189b2012-06-20 16:38:30 -07002655 wdiSetSTAKeyRspCb: callback for passing back the
2656 response of the set STA key operation received from the
2657 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002658
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002660 callback
2661
Jeff Johnson295189b2012-06-20 16:38:30 -07002662 @see WDI_PostAssocReq
2663 @return Result of the function call
2664*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002665WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002666WDI_SetSTAKeyReq
2667(
2668 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2669 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2670 void* pUserData
2671)
2672{
2673 WDI_EventInfoType wdiEventData;
2674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2675
2676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002678 ------------------------------------------------------------------------*/
2679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2680 {
2681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2682 "WDI API call before module is initialized - Fail request");
2683
Jeff Johnsone7245742012-09-05 17:12:55 -07002684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 }
2686
2687 /*------------------------------------------------------------------------
2688 Fill in Event data and post to the Main FSM
2689 ------------------------------------------------------------------------*/
2690 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002691 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2692 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2693 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 wdiEventData.pUserData = pUserData;
2695
2696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2697
2698}/*WDI_SetSTAKeyReq*/
2699
2700
2701/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002702 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002703 wants to uninstall a previously set STA key in HW. Upon
2704 the call of this API the WLAN DAL will pack and send a
2705 HAL Remove STA Key request message to the lower RIVA
2706 sub-system if DAL is in state STARTED.
2707
2708 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002709 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002710
2711 WDI_SetSTAKeyReq must have been called.
2712
Jeff Johnsone7245742012-09-05 17:12:55 -07002713 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002714 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002715
Jeff Johnson295189b2012-06-20 16:38:30 -07002716 wdiRemoveSTAKeyRspCb: callback for passing back the
2717 response of the remove STA key operation received from
2718 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002719
Jeff Johnson295189b2012-06-20 16:38:30 -07002720 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002721 callback
2722
Jeff Johnson295189b2012-06-20 16:38:30 -07002723 @see WDI_SetSTAKeyReq
2724 @return Result of the function call
2725*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002726WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002727WDI_RemoveSTAKeyReq
2728(
2729 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2730 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2731 void* pUserData
2732)
2733{
2734 WDI_EventInfoType wdiEventData;
2735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2736
2737 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002738 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002739 ------------------------------------------------------------------------*/
2740 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2741 {
2742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2743 "WDI API call before module is initialized - Fail request");
2744
Jeff Johnsone7245742012-09-05 17:12:55 -07002745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002746 }
2747
2748 /*------------------------------------------------------------------------
2749 Fill in Event data and post to the Main FSM
2750 ------------------------------------------------------------------------*/
2751 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002752 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2753 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2754 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002755 wdiEventData.pUserData = pUserData;
2756
2757 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2758
2759}/*WDI_RemoveSTAKeyReq*/
2760
2761
2762/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002763 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002764 wants to install a STA Bcast encryption key on the HW.
2765 Upon the call of this API the WLAN DAL will pack and
2766 send a HAL Start request message to the lower RIVA
2767 sub-system if DAL is in state 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_PostAssocReq must have been called.
2773
Jeff Johnsone7245742012-09-05 17:12:55 -07002774 @param pwdiSetSTABcastKeyParams: the BSS Key set 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 wdiSetSTABcastKeyRspCb: callback for passing back the
2778 response of the set BSS Key operation received from the
2779 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_PostAssocReq
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_SetSTABcastKeyReq
2789(
2790 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2791 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2792 void* pUserData
2793)
2794
2795{
2796 WDI_EventInfoType wdiEventData;
2797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2798
2799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002800 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002801 ------------------------------------------------------------------------*/
2802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2803 {
2804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2805 "WDI API call before module is initialized - Fail request");
2806
Jeff Johnsone7245742012-09-05 17:12:55 -07002807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002808 }
2809
2810 /*------------------------------------------------------------------------
2811 Fill in Event data and post to the Main FSM
2812 ------------------------------------------------------------------------*/
2813 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002814 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2815 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2816 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002817 wdiEventData.pUserData = pUserData;
2818
2819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2820
2821}/*WDI_SetSTABcastKeyReq*/
2822
2823/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002824 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002825 MAC wants to uninstall a STA Bcast key from HW. Upon the
2826 call of this API the WLAN DAL will pack and send a HAL
2827 Remove STA Bcast 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_SetSTABcastKeyReq must have been called.
2834
Jeff Johnsone7245742012-09-05 17:12:55 -07002835 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 parameters as specified by the Device
2837 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002838
Jeff Johnson295189b2012-06-20 16:38:30 -07002839 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2840 response of the remove STA Bcast key operation received
2841 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002842
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002844 callback
2845
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 @see WDI_SetSTABcastKeyReq
2847 @return Result of the function call
2848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002850WDI_RemoveSTABcastKeyReq
2851(
2852 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2853 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2854 void* pUserData
2855)
2856{
2857 WDI_EventInfoType wdiEventData;
2858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2859
2860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 ------------------------------------------------------------------------*/
2863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2864 {
2865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2866 "WDI API call before module is initialized - Fail request");
2867
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 }
2870
2871 /*------------------------------------------------------------------------
2872 Fill in Event data and post to the Main FSM
2873 ------------------------------------------------------------------------*/
2874 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002875 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2876 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2877 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 wdiEventData.pUserData = pUserData;
2879
2880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2881
2882}/*WDI_RemoveSTABcastKeyReq*/
2883
2884/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002885 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002886 MAC wants to set Max Tx Power to HW. Upon the
2887 call of this API the WLAN DAL will pack and send a HAL
2888 Remove STA Bcast 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_SetSTABcastKeyReq must have been called.
2895
Jeff Johnsone7245742012-09-05 17:12:55 -07002896 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 parameters as specified by the Device
2898 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002899
Jeff Johnson295189b2012-06-20 16:38:30 -07002900 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2901 response of the remove STA Bcast key operation received
2902 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002903
Jeff Johnson295189b2012-06-20 16:38:30 -07002904 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002905 callback
2906
Jeff Johnson295189b2012-06-20 16:38:30 -07002907 @see WDI_SetMaxTxPowerReq
2908 @return Result of the function call
2909*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002910WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002911WDI_SetMaxTxPowerReq
2912(
2913 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2914 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2915 void* pUserData
2916)
2917{
2918 WDI_EventInfoType wdiEventData;
2919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2920
2921 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002922 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002923 ------------------------------------------------------------------------*/
2924 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2925 {
2926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2927 "WDI API call before module is initialized - Fail request");
2928
Jeff Johnsone7245742012-09-05 17:12:55 -07002929 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002930 }
2931
2932 /*------------------------------------------------------------------------
2933 Fill in Event data and post to the Main FSM
2934 ------------------------------------------------------------------------*/
2935 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002936 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2937 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2938 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002939 wdiEventData.pUserData = pUserData;
2940
2941 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2942}
2943
schangd82195a2013-03-13 18:41:24 -07002944/**
Arif Hussainfc753992013-08-09 15:09:58 -07002945 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
2946 MAC wants to set Max Tx Power to HW for specific band.
2947
2948 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
2949
2950 wdiReqStatusCb: callback for passing back the
2951 response msg from the device
2952
2953 pUserData: user data will be passed back with the
2954 callback
2955
2956 @see WDI_SetMaxTxPowerPerBandReq
2957 @return Result of the function call
2958*/
2959WDI_Status
2960WDI_SetMaxTxPowerPerBandReq
2961(
2962 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
2963 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
2964 void* pUserData
2965)
2966{
2967 WDI_EventInfoType wdiEventData;
2968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2969
2970 /*------------------------------------------------------------------------
2971 Sanity Check
2972 ------------------------------------------------------------------------*/
2973 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2974 {
2975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2976 "WDI API call before module is initialized - Fail request");
2977
2978 return WDI_STATUS_E_NOT_ALLOWED;
2979 }
2980
2981 /*------------------------------------------------------------------------
2982 Fill in Event data and post to the Main FSM
2983 ------------------------------------------------------------------------*/
2984 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
2985 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
2986 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
2987 wdiEventData.pCBfnc = wdiReqStatusCb;
2988 wdiEventData.pUserData = pUserData;
2989
2990 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2991}
2992
2993/**
schangd82195a2013-03-13 18:41:24 -07002994 @brief WDI_SetTxPowerReq will be called when the upper
2995 MAC wants to set Tx Power to HW.
2996 In state BUSY this request will be queued. Request won't
2997 be allowed in any other state.
2998
2999
3000 @param pwdiSetTxPowerParams: set TS Power parameters
3001 BSSID and target TX Power with dbm included
3002
3003 wdiReqStatusCb: callback for passing back the response
3004
3005 pUserData: user data will be passed back with the
3006 callback
3007
3008 @return Result of the function call
3009*/
3010WDI_Status
3011WDI_SetTxPowerReq
3012(
3013 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3014 WDA_SetTxPowerRspCb wdiReqStatusCb,
3015 void* pUserData
3016)
3017{
3018 WDI_EventInfoType wdiEventData;
3019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3020
3021 /*------------------------------------------------------------------------
3022 Sanity Check
3023 ------------------------------------------------------------------------*/
3024 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3025 {
3026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3027 "WDI API call before module is initialized - Fail request");
3028
3029 return WDI_STATUS_E_NOT_ALLOWED;
3030 }
3031
3032 /*------------------------------------------------------------------------
3033 Fill in Event data and post to the Main FSM
3034 ------------------------------------------------------------------------*/
3035 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3036 wdiEventData.pEventData = pwdiSetTxPowerParams;
3037 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3038 wdiEventData.pCBfnc = wdiReqStatusCb;
3039 wdiEventData.pUserData = pUserData;
3040
3041 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3042}
3043
Jeff Johnson295189b2012-06-20 16:38:30 -07003044#ifdef FEATURE_WLAN_CCX
3045WDI_Status
3046WDI_TSMStatsReq
3047(
3048 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3049 WDI_TsmRspCb wdiReqStatusCb,
3050 void* pUserData
3051)
3052{
3053 WDI_EventInfoType wdiEventData;
3054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003055 /*------------------------------------------------------------------------
3056 Sanity Check
3057 ------------------------------------------------------------------------*/
3058 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3059 {
3060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3061 "WDI API call before module is initialized - Fail request");
3062
3063 return WDI_STATUS_E_NOT_ALLOWED;
3064 }
3065
3066 /*------------------------------------------------------------------------
3067 Fill in Event data and post to the Main FSM
3068 ------------------------------------------------------------------------*/
3069 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3070 wdiEventData.pEventData = pwdiTsmReqParams;
3071 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3072 wdiEventData.pCBfnc = wdiReqStatusCb;
3073 wdiEventData.pUserData = pUserData;
3074
3075 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3076
3077}
3078#endif
3079
3080/*========================================================================
3081
3082 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003083
Jeff Johnson295189b2012-06-20 16:38:30 -07003084==========================================================================*/
3085
3086/**
3087 @brief WDI_AddTSReq will be called when the upper MAC to inform
3088 the device of a successful add TSpec negotiation. HW
3089 needs to receive the TSpec Info from the UMAC in order
3090 to configure properly the QoS data traffic. Upon the
3091 call of this API the WLAN DAL will pack and send a HAL
3092 Add TS request message to the lower RIVA sub-system if
3093 DAL is in state STARTED.
3094
3095 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003096 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003097
3098 WDI_PostAssocReq must have been called.
3099
3100 @param wdiAddTsReqParams: the add TS parameters as specified by
3101 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003102
Jeff Johnson295189b2012-06-20 16:38:30 -07003103 wdiAddTsRspCb: callback for passing back the response of
3104 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003105
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003107 callback
3108
Jeff Johnson295189b2012-06-20 16:38:30 -07003109 @see WDI_PostAssocReq
3110 @return Result of the function call
3111*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003112WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003113WDI_AddTSReq
3114(
3115 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3116 WDI_AddTsRspCb wdiAddTsRspCb,
3117 void* pUserData
3118)
3119{
3120 WDI_EventInfoType wdiEventData;
3121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3122
3123 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003124 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003125 ------------------------------------------------------------------------*/
3126 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3127 {
3128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3129 "WDI API call before module is initialized - Fail request");
3130
Jeff Johnsone7245742012-09-05 17:12:55 -07003131 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003132 }
3133
3134 /*------------------------------------------------------------------------
3135 Fill in Event data and post to the Main FSM
3136 ------------------------------------------------------------------------*/
3137 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003138 wdiEventData.pEventData = pwdiAddTsReqParams;
3139 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3140 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003141 wdiEventData.pUserData = pUserData;
3142
3143 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3144
3145}/*WDI_AddTSReq*/
3146
3147
3148
3149/**
3150 @brief WDI_DelTSReq will be called when the upper MAC has ended
3151 admission on a specific AC. This is to inform HW that
3152 QoS traffic parameters must be rest. Upon the call of
3153 this API the WLAN DAL will pack and send a HAL Del TS
3154 request message to the lower RIVA sub-system if DAL is
3155 in state STARTED.
3156
3157 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003158 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003159
3160 WDI_AddTSReq must have been called.
3161
3162 @param wdiDelTsReqParams: the del TS parameters as specified by
3163 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003164
Jeff Johnson295189b2012-06-20 16:38:30 -07003165 wdiDelTsRspCb: callback for passing back the response of
3166 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003167
Jeff Johnson295189b2012-06-20 16:38:30 -07003168 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003169 callback
3170
Jeff Johnson295189b2012-06-20 16:38:30 -07003171 @see WDI_AddTSReq
3172 @return Result of the function call
3173*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003174WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003175WDI_DelTSReq
3176(
3177 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3178 WDI_DelTsRspCb wdiDelTsRspCb,
3179 void* pUserData
3180)
3181{
3182 WDI_EventInfoType wdiEventData;
3183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3184
3185 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003186 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003187 ------------------------------------------------------------------------*/
3188 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3189 {
3190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3191 "WDI API call before module is initialized - Fail request");
3192
Jeff Johnsone7245742012-09-05 17:12:55 -07003193 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003194 }
3195
3196 /*------------------------------------------------------------------------
3197 Fill in Event data and post to the Main FSM
3198 ------------------------------------------------------------------------*/
3199 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003200 wdiEventData.pEventData = pwdiDelTsReqParams;
3201 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3202 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003203 wdiEventData.pUserData = pUserData;
3204
3205 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3206
3207}/*WDI_DelTSReq*/
3208
3209
3210
3211/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003212 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003213 wishes to update the EDCA parameters used by HW for QoS
3214 data traffic. Upon the call of this API the WLAN DAL
3215 will pack and send a HAL Update EDCA Params request
3216 message to the lower RIVA sub-system if DAL is in state
3217 STARTED.
3218
3219 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003220 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003221
3222 WDI_PostAssocReq must have been called.
3223
Jeff Johnsone7245742012-09-05 17:12:55 -07003224 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003225 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003226
Jeff Johnson295189b2012-06-20 16:38:30 -07003227 wdiUpdateEDCAParamsRspCb: callback for passing back the
3228 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003229
Jeff Johnson295189b2012-06-20 16:38:30 -07003230 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003231 callback
3232
Jeff Johnson295189b2012-06-20 16:38:30 -07003233 @see WDI_PostAssocReq
3234 @return Result of the function call
3235*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003236WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003237WDI_UpdateEDCAParams
3238(
3239 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3240 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3241 void* pUserData
3242)
3243{
3244 WDI_EventInfoType wdiEventData;
3245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3246
3247 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003248 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003249 ------------------------------------------------------------------------*/
3250 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3251 {
3252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3253 "WDI API call before module is initialized - Fail request");
3254
Jeff Johnsone7245742012-09-05 17:12:55 -07003255 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003256 }
3257
3258 /*------------------------------------------------------------------------
3259 Fill in Event data and post to the Main FSM
3260 ------------------------------------------------------------------------*/
3261 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003262 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3263 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3264 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003265 wdiEventData.pUserData = pUserData;
3266
3267 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3268
3269}/*WDI_UpdateEDCAParams*/
3270
3271
3272/**
3273 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3274 successfully a BA session and needs to notify the HW for
3275 the appropriate settings to take place. Upon the call of
3276 this API the WLAN DAL will pack and send a HAL Add BA
3277 request message to the lower RIVA sub-system if DAL is
3278 in state STARTED.
3279
3280 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003281 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003282
3283 WDI_PostAssocReq must have been called.
3284
3285 @param wdiAddBAReqParams: the add BA parameters as specified by
3286 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003287
Jeff Johnson295189b2012-06-20 16:38:30 -07003288 wdiAddBARspCb: callback for passing back the response of
3289 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003290
Jeff Johnson295189b2012-06-20 16:38:30 -07003291 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003292 callback
3293
Jeff Johnson295189b2012-06-20 16:38:30 -07003294 @see WDI_PostAssocReq
3295 @return Result of the function call
3296*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003297WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003298WDI_AddBASessionReq
3299(
3300 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3301 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3302 void* pUserData
3303)
3304{
3305 WDI_EventInfoType wdiEventData;
3306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3307
3308 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003309 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003310 ------------------------------------------------------------------------*/
3311 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3312 {
3313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3314 "WDI API call before module is initialized - Fail request");
3315
Jeff Johnsone7245742012-09-05 17:12:55 -07003316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003317 }
3318
3319 /*------------------------------------------------------------------------
3320 Fill in Event data and post to the Main FSM
3321 ------------------------------------------------------------------------*/
3322 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003323 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3324 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3325 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003326 wdiEventData.pUserData = pUserData;
3327
3328 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3329
3330}/*WDI_AddBASessionReq*/
3331
3332/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003333 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003334 inform HW that it has deleted a previously created BA
3335 session. Upon the call of this API the WLAN DAL will
3336 pack and send a HAL Del BA request message to the lower
3337 RIVA sub-system if DAL is in state STARTED.
3338
3339 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003340 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003341
3342 WDI_AddBAReq must have been called.
3343
3344 @param wdiDelBAReqParams: the del BA parameters as specified by
3345 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003346
Jeff Johnson295189b2012-06-20 16:38:30 -07003347 wdiDelBARspCb: callback for passing back the response of
3348 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003349
Jeff Johnson295189b2012-06-20 16:38:30 -07003350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003351 callback
3352
Jeff Johnson295189b2012-06-20 16:38:30 -07003353 @see WDI_AddBAReq
3354 @return Result of the function call
3355*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003356WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003357WDI_DelBAReq
3358(
3359 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3360 WDI_DelBARspCb wdiDelBARspCb,
3361 void* pUserData
3362)
3363{
3364 WDI_EventInfoType wdiEventData;
3365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3366
3367 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003368 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003369 ------------------------------------------------------------------------*/
3370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3371 {
3372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3373 "WDI API call before module is initialized - Fail request");
3374
Jeff Johnsone7245742012-09-05 17:12:55 -07003375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003376 }
3377
3378 /*------------------------------------------------------------------------
3379 Fill in Event data and post to the Main FSM
3380 ------------------------------------------------------------------------*/
3381 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003382 wdiEventData.pEventData = pwdiDelBAReqParams;
3383 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3384 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003385 wdiEventData.pUserData = pUserData;
3386
3387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3388
3389}/*WDI_DelBAReq*/
3390
Jeff Johnsone7245742012-09-05 17:12:55 -07003391/*========================================================================
3392
Jeff Johnson295189b2012-06-20 16:38:30 -07003393 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003394
Jeff Johnson295189b2012-06-20 16:38:30 -07003395==========================================================================*/
3396
3397/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003398 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003399 wants to set the power save related configurations of
3400 the WLAN Device. Upon the call of this API the WLAN DAL
3401 will pack and send a HAL Update CFG request message to
3402 the lower RIVA sub-system if DAL is in state STARTED.
3403
3404 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003405 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003406
3407 WDI_Start must have been called.
3408
Jeff Johnsone7245742012-09-05 17:12:55 -07003409 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003411
Jeff Johnson295189b2012-06-20 16:38:30 -07003412 wdiSetPwrSaveCfgCb: callback for passing back the
3413 response of the set power save cfg operation received
3414 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003415
Jeff Johnson295189b2012-06-20 16:38:30 -07003416 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003417 callback
3418
Jeff Johnson295189b2012-06-20 16:38:30 -07003419 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003420 @return Result of the function call
3421*/
3422WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003423WDI_SetPwrSaveCfgReq
3424(
3425 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3426 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3427 void* pUserData
3428)
3429{
3430 WDI_EventInfoType wdiEventData;
3431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3432
3433 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003434 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003435 ------------------------------------------------------------------------*/
3436 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3437 {
3438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3439 "WDI API call before module is initialized - Fail request");
3440
Jeff Johnsone7245742012-09-05 17:12:55 -07003441 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003442 }
3443
3444 /*------------------------------------------------------------------------
3445 Fill in Event data and post to the Main FSM
3446 ------------------------------------------------------------------------*/
3447 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003448 wdiEventData.pEventData = pwdiPowerSaveCfg;
3449 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3450 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003451 wdiEventData.pUserData = pUserData;
3452
3453 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3454
3455}/*WDI_SetPwrSaveCfgReq*/
3456
3457/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003458 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003459 request the device to get into IMPS power state. Upon
3460 the call of this API the WLAN DAL will send a HAL Enter
3461 IMPS request message to the lower RIVA sub-system if DAL
3462 is in state STARTED.
3463
3464 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003465 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003466
Jeff Johnsone7245742012-09-05 17:12:55 -07003467
3468 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003469 response of the Enter IMPS operation received from the
3470 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003471
Jeff Johnson295189b2012-06-20 16:38:30 -07003472 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003473 callback
3474
Jeff Johnson295189b2012-06-20 16:38:30 -07003475 @see WDI_Start
3476 @return Result of the function call
3477*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003478WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003479WDI_EnterImpsReq
3480(
3481 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3482 void* pUserData
3483)
3484{
3485 WDI_EventInfoType wdiEventData;
3486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3487
3488 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003489 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003490 ------------------------------------------------------------------------*/
3491 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3492 {
3493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3494 "WDI API call before module is initialized - Fail request");
3495
Jeff Johnsone7245742012-09-05 17:12:55 -07003496 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003497 }
3498
3499 /*------------------------------------------------------------------------
3500 Fill in Event data and post to the Main FSM
3501 ------------------------------------------------------------------------*/
3502 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003503 wdiEventData.pEventData = NULL;
3504 wdiEventData.uEventDataSize = 0;
3505 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003506 wdiEventData.pUserData = pUserData;
3507
3508 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3509
3510}/*WDI_EnterImpsReq*/
3511
3512/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003513 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003514 request the device to get out of IMPS power state. Upon
3515 the call of this API the WLAN DAL will send a HAL Exit
3516 IMPS request message to the lower RIVA sub-system if DAL
3517 is in state STARTED.
3518
3519 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003520 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003521
Jeff Johnson295189b2012-06-20 16:38:30 -07003522
Jeff Johnsone7245742012-09-05 17:12:55 -07003523
3524 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003525 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003526
Jeff Johnson295189b2012-06-20 16:38:30 -07003527 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003528 callback
3529
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 @see WDI_Start
3531 @return Result of the function call
3532*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003533WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003534WDI_ExitImpsReq
3535(
3536 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3537 void* pUserData
3538)
3539{
3540 WDI_EventInfoType wdiEventData;
3541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3542
3543 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003544 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003545 ------------------------------------------------------------------------*/
3546 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3547 {
3548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3549 "WDI API call before module is initialized - Fail request");
3550
Jeff Johnsone7245742012-09-05 17:12:55 -07003551 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 }
3553
3554 /*------------------------------------------------------------------------
3555 Fill in Event data and post to the Main FSM
3556 ------------------------------------------------------------------------*/
3557 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003558 wdiEventData.pEventData = NULL;
3559 wdiEventData.uEventDataSize = 0;
3560 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003561 wdiEventData.pUserData = pUserData;
3562
3563 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3564
3565}/*WDI_ExitImpsReq*/
3566
3567/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003568 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003569 request the device to get into BMPS power state. Upon
3570 the call of this API the WLAN DAL will pack and send a
3571 HAL Enter BMPS request message to the lower RIVA
3572 sub-system if DAL is in state STARTED.
3573
3574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003576
3577 WDI_PostAssocReq must have been called.
3578
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003581
Jeff Johnson295189b2012-06-20 16:38:30 -07003582 wdiEnterBmpsRspCb: callback for passing back the
3583 response of the Enter BMPS operation received from the
3584 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003585
Jeff Johnson295189b2012-06-20 16:38:30 -07003586 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003587 callback
3588
Jeff Johnson295189b2012-06-20 16:38:30 -07003589 @see WDI_PostAssocReq
3590 @return Result of the function call
3591*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003592WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003593WDI_EnterBmpsReq
3594(
3595 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3596 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3597 void* pUserData
3598)
3599{
3600 WDI_EventInfoType wdiEventData;
3601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3602
3603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003604 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 ------------------------------------------------------------------------*/
3606 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3607 {
3608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3609 "WDI API call before module is initialized - Fail request");
3610
Jeff Johnsone7245742012-09-05 17:12:55 -07003611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003612 }
3613
3614 /*------------------------------------------------------------------------
3615 Fill in Event data and post to the Main FSM
3616 ------------------------------------------------------------------------*/
3617 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003618 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3619 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3620 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 wdiEventData.pUserData = pUserData;
3622
3623 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3624
3625}/*WDI_EnterBmpsReq*/
3626
3627/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003628 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003629 request the device to get out of BMPS power state. Upon
3630 the call of this API the WLAN DAL will pack and send a
3631 HAL Exit BMPS request message to the lower RIVA
3632 sub-system if DAL is in state STARTED.
3633
3634 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003635 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003636
3637 WDI_PostAssocReq must have been called.
3638
Jeff Johnsone7245742012-09-05 17:12:55 -07003639 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003640 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003641
Jeff Johnson295189b2012-06-20 16:38:30 -07003642 wdiExitBmpsRspCb: callback for passing back the response
3643 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003644
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003646 callback
3647
Jeff Johnson295189b2012-06-20 16:38:30 -07003648 @see WDI_PostAssocReq
3649 @return Result of the function call
3650*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003651WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003652WDI_ExitBmpsReq
3653(
3654 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3655 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3656 void* pUserData
3657)
3658{
3659 WDI_EventInfoType wdiEventData;
3660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3661
3662 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003663 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003664 ------------------------------------------------------------------------*/
3665 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3666 {
3667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3668 "WDI API call before module is initialized - Fail request");
3669
Jeff Johnsone7245742012-09-05 17:12:55 -07003670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003671 }
3672
3673 /*------------------------------------------------------------------------
3674 Fill in Event data and post to the Main FSM
3675 ------------------------------------------------------------------------*/
3676 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003677 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3678 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3679 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003680 wdiEventData.pUserData = pUserData;
3681
3682 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3683
3684}/*WDI_ExitBmpsReq*/
3685
3686/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003687 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003688 request the device to get into UAPSD power state. Upon
3689 the call of this API the WLAN DAL will pack and send a
3690 HAL Enter UAPSD request message to the lower RIVA
3691 sub-system if DAL is in state STARTED.
3692
3693 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003694 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003695
3696 WDI_PostAssocReq must have been called.
3697 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003698
3699 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003700 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003701
Jeff Johnson295189b2012-06-20 16:38:30 -07003702 wdiEnterUapsdRspCb: callback for passing back the
3703 response of the Enter UAPSD operation received from the
3704 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003705
Jeff Johnson295189b2012-06-20 16:38:30 -07003706 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 callback
3708
Jeff Johnson295189b2012-06-20 16:38:30 -07003709 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3710 @return Result of the function call
3711*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003712WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003713WDI_EnterUapsdReq
3714(
3715 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3716 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3717 void* pUserData
3718)
3719{
3720 WDI_EventInfoType wdiEventData;
3721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3722
3723 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003724 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003725 ------------------------------------------------------------------------*/
3726 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3727 {
3728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3729 "WDI API call before module is initialized - Fail request");
3730
Jeff Johnsone7245742012-09-05 17:12:55 -07003731 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003732 }
3733
3734 /*------------------------------------------------------------------------
3735 Fill in Event data and post to the Main FSM
3736 ------------------------------------------------------------------------*/
3737 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003738 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3739 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3740 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003741 wdiEventData.pUserData = pUserData;
3742
3743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3744
3745}/*WDI_EnterUapsdReq*/
3746
3747/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003748 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003749 request the device to get out of UAPSD power state. Upon
3750 the call of this API the WLAN DAL will send a HAL Exit
3751 UAPSD request message to the lower RIVA sub-system if
3752 DAL is in state STARTED.
3753
3754 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003755 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003756
3757 WDI_PostAssocReq must have been called.
3758
Jeff Johnsone7245742012-09-05 17:12:55 -07003759 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003760 response of the Exit UAPSD operation received from the
3761 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003762
Jeff Johnson295189b2012-06-20 16:38:30 -07003763 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003764 callback
3765
Jeff Johnson295189b2012-06-20 16:38:30 -07003766 @see WDI_PostAssocReq
3767 @return Result of the function call
3768*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003769WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003770WDI_ExitUapsdReq
3771(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003772 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003773 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3774 void* pUserData
3775)
3776{
3777 WDI_EventInfoType wdiEventData;
3778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3779
3780 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003781 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003782 ------------------------------------------------------------------------*/
3783 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3784 {
3785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3786 "WDI API call before module is initialized - Fail request");
3787
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003789 }
3790
3791 /*------------------------------------------------------------------------
3792 Fill in Event data and post to the Main FSM
3793 ------------------------------------------------------------------------*/
3794 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003795 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3796 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003797 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003798 wdiEventData.pUserData = pUserData;
3799
3800 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3801
3802}/*WDI_ExitUapsdReq*/
3803
3804/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003805 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003806 MAC wants to set the UAPSD related configurations
3807 of an associated STA (while acting as an AP) to the WLAN
3808 Device. Upon the call of this API the WLAN DAL will pack
3809 and send a HAL Update UAPSD params request message to
3810 the lower RIVA sub-system if DAL is in state STARTED.
3811
3812 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003813 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003814
3815 WDI_ConfigBSSReq must have been called.
3816
Jeff Johnsone7245742012-09-05 17:12:55 -07003817 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003818 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003819
Jeff Johnson295189b2012-06-20 16:38:30 -07003820 wdiUpdateUapsdParamsCb: callback for passing back the
3821 response of the update UAPSD params operation received
3822 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003823
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003825 callback
3826
Jeff Johnson295189b2012-06-20 16:38:30 -07003827 @see WDI_ConfigBSSReq
3828 @return Result of the function call
3829*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003830WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003831WDI_UpdateUapsdParamsReq
3832(
3833 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3834 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3835 void* pUserData
3836)
3837{
3838 WDI_EventInfoType wdiEventData;
3839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3840
3841 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003842 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003843 ------------------------------------------------------------------------*/
3844 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3845 {
3846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3847 "WDI API call before module is initialized - Fail request");
3848
Jeff Johnsone7245742012-09-05 17:12:55 -07003849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003850 }
3851
3852 /*------------------------------------------------------------------------
3853 Fill in Event data and post to the Main FSM
3854 ------------------------------------------------------------------------*/
3855 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003856 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003857 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003858 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003859 wdiEventData.pUserData = pUserData;
3860
3861 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3862
3863}/*WDI_UpdateUapsdParamsReq*/
3864
3865/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003866 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003867 MAC wants to set the UAPSD related configurations before
3868 requesting for enter UAPSD power state to the WLAN
3869 Device. Upon the call of this API the WLAN DAL will pack
3870 and send a HAL Set UAPSD params request message to
3871 the lower RIVA sub-system if DAL is in state STARTED.
3872
3873 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003874 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003875
3876 WDI_PostAssocReq must have been called.
3877
3878 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3879 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003880
Jeff Johnson295189b2012-06-20 16:38:30 -07003881 wdiSetUapsdAcParamsCb: callback for passing back the
3882 response of the set UAPSD params operation received from
3883 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003884
Jeff Johnson295189b2012-06-20 16:38:30 -07003885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003886 callback
3887
Jeff Johnson295189b2012-06-20 16:38:30 -07003888 @see WDI_PostAssocReq
3889 @return Result of the function call
3890*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003891WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003892WDI_SetUapsdAcParamsReq
3893(
3894 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3895 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3896 void* pUserData
3897)
3898{
3899 WDI_EventInfoType wdiEventData;
3900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3901
3902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003903 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003904 ------------------------------------------------------------------------*/
3905 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3906 {
3907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3908 "WDI API call before module is initialized - Fail request");
3909
Jeff Johnsone7245742012-09-05 17:12:55 -07003910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003911 }
3912
3913 /*------------------------------------------------------------------------
3914 Fill in Event data and post to the Main FSM
3915 ------------------------------------------------------------------------*/
3916 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003917 wdiEventData.pEventData = pwdiUapsdInfo;
3918 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3919 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003920 wdiEventData.pUserData = pUserData;
3921
3922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3923
3924}/*WDI_SetUapsdAcParamsReq*/
3925
3926/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003927 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003928 MAC wants to set/reset the RXP filters for received pkts
3929 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3930 and send a HAL configure RXP filter request message to
3931 the lower RIVA sub-system.
3932
3933 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003934 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003935
Jeff Johnsone7245742012-09-05 17:12:55 -07003936
3937 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003938 filter as specified by the Device
3939 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003940
Jeff Johnson295189b2012-06-20 16:38:30 -07003941 wdiConfigureRxpFilterCb: callback for passing back the
3942 response of the configure RXP filter operation received
3943 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003944
Jeff Johnson295189b2012-06-20 16:38:30 -07003945 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003946 callback
3947
Jeff Johnson295189b2012-06-20 16:38:30 -07003948 @return Result of the function call
3949*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003950WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003951WDI_ConfigureRxpFilterReq
3952(
3953 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3954 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3955 void* pUserData
3956)
3957{
3958 WDI_EventInfoType wdiEventData;
3959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3960
3961 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003962 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003963 ------------------------------------------------------------------------*/
3964 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3965 {
3966 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3967 "WDI API call before module is initialized - Fail request");
3968
Jeff Johnsone7245742012-09-05 17:12:55 -07003969 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003970 }
3971
3972 /*------------------------------------------------------------------------
3973 Fill in Event data and post to the Main FSM
3974 ------------------------------------------------------------------------*/
3975 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003976 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3977 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3978 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003979 wdiEventData.pUserData = pUserData;
3980
3981 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3982}/*WDI_ConfigureRxpFilterReq*/
3983
3984/**
3985 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3986 wants to set the beacon filters while in power save.
3987 Upon the call of this API the WLAN DAL will pack and
3988 send a Beacon filter request message to the
3989 lower RIVA sub-system.
3990
3991 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003993
Jeff Johnsone7245742012-09-05 17:12:55 -07003994
3995 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003996 filter as specified by the Device
3997 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003998
Jeff Johnson295189b2012-06-20 16:38:30 -07003999 wdiBeaconFilterCb: callback for passing back the
4000 response of the set beacon filter operation received
4001 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004002
Jeff Johnson295189b2012-06-20 16:38:30 -07004003 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004004 callback
4005
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 @return Result of the function call
4007*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004008WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004009WDI_SetBeaconFilterReq
4010(
4011 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4012 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4013 void* pUserData
4014)
4015{
4016 WDI_EventInfoType wdiEventData;
4017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4018
4019 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004020 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 ------------------------------------------------------------------------*/
4022 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4023 {
4024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4025 "WDI API call before module is initialized - Fail request");
4026
Jeff Johnsone7245742012-09-05 17:12:55 -07004027 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004028 }
4029
4030 /*------------------------------------------------------------------------
4031 Fill in Event data and post to the Main FSM
4032 ------------------------------------------------------------------------*/
4033 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004034 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004035 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004036 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004037 wdiEventData.pUserData = pUserData;
4038
4039 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4040}/*WDI_SetBeaconFilterReq*/
4041
4042/**
4043 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4044 wants to remove the beacon filter for particular IE
4045 while in power save. Upon the call of this API the WLAN
4046 DAL will pack and send a remove Beacon filter request
4047 message to the lower RIVA sub-system.
4048
4049 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004050 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004051
Jeff Johnsone7245742012-09-05 17:12:55 -07004052
4053 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004054 filter as specified by the Device
4055 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004056
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 wdiBeaconFilterCb: callback for passing back the
4058 response of the remove beacon filter operation received
4059 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004060
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004062 callback
4063
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 @return Result of the function call
4065*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004067WDI_RemBeaconFilterReq
4068(
4069 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4070 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4071 void* pUserData
4072)
4073{
4074 WDI_EventInfoType wdiEventData;
4075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4076
4077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004079 ------------------------------------------------------------------------*/
4080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4081 {
4082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4083 "WDI API call before module is initialized - Fail request");
4084
Jeff Johnsone7245742012-09-05 17:12:55 -07004085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004086 }
4087
4088 /*------------------------------------------------------------------------
4089 Fill in Event data and post to the Main FSM
4090 ------------------------------------------------------------------------*/
4091 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004092 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004093 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004094 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004095 wdiEventData.pUserData = pUserData;
4096
4097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4098}/*WDI_RemBeaconFilterReq*/
4099
4100/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004101 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004102 MAC wants to set the RSSI thresholds related
4103 configurations while in power save. Upon the call of
4104 this API the WLAN DAL will pack and send a HAL Set RSSI
4105 thresholds request message to the lower RIVA
4106 sub-system if DAL is in state STARTED.
4107
4108 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004110
4111 WDI_PostAssocReq must have been called.
4112
4113 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4114 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004115
Jeff Johnson295189b2012-06-20 16:38:30 -07004116 wdiSetUapsdAcParamsCb: callback for passing back the
4117 response of the set UAPSD params operation received from
4118 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004119
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 callback
4122
Jeff Johnson295189b2012-06-20 16:38:30 -07004123 @see WDI_PostAssocReq
4124 @return Result of the function call
4125*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004127WDI_SetRSSIThresholdsReq
4128(
4129 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4130 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4131 void* pUserData
4132)
4133{
4134 WDI_EventInfoType wdiEventData;
4135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4136
4137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 ------------------------------------------------------------------------*/
4140 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4141 {
4142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4143 "WDI API call before module is initialized - Fail request");
4144
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004146 }
4147
4148 /*------------------------------------------------------------------------
4149 Fill in Event data and post to the Main FSM
4150 ------------------------------------------------------------------------*/
4151 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004152 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004153 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004154 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 wdiEventData.pUserData = pUserData;
4156
4157 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4158}/* WDI_SetRSSIThresholdsReq*/
4159
4160/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004161 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004162 wants to set the filter to minimize unnecessary host
4163 wakeup due to broadcast traffic while in power save.
4164 Upon the call of this API the WLAN DAL will pack and
4165 send a HAL host offload request message to the
4166 lower RIVA sub-system if DAL is in state STARTED.
4167
4168 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004169 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004170
4171 WDI_PostAssocReq must have been called.
4172
Jeff Johnsone7245742012-09-05 17:12:55 -07004173 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004174 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004175
Jeff Johnson295189b2012-06-20 16:38:30 -07004176 wdiHostOffloadCb: callback for passing back the response
4177 of the host offload operation received from the
4178 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004179
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004181 callback
4182
Jeff Johnson295189b2012-06-20 16:38:30 -07004183 @see WDI_PostAssocReq
4184 @return Result of the function call
4185*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004186WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004187WDI_HostOffloadReq
4188(
4189 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4190 WDI_HostOffloadCb wdiHostOffloadCb,
4191 void* pUserData
4192)
4193{
4194 WDI_EventInfoType wdiEventData;
4195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4196
4197 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004198 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004199 ------------------------------------------------------------------------*/
4200 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4201 {
4202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4203 "WDI API call before module is initialized - Fail request");
4204
Jeff Johnsone7245742012-09-05 17:12:55 -07004205 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004206 }
4207
4208 /*------------------------------------------------------------------------
4209 Fill in Event data and post to the Main FSM
4210 ------------------------------------------------------------------------*/
4211 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004212 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004213 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004215 wdiEventData.pUserData = pUserData;
4216
4217 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4218}/*WDI_HostOffloadReq*/
4219
4220/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004221 @brief WDI_KeepAliveReq will be called when the upper MAC
4222 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 and minimize unnecessary host wakeups due to while in power save.
4224 Upon the call of this API the WLAN DAL will pack and
4225 send a HAL Keep Alive request message to the
4226 lower RIVA sub-system if DAL is in state STARTED.
4227
4228 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004229 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004230
4231 WDI_PostAssocReq must have been called.
4232
Jeff Johnsone7245742012-09-05 17:12:55 -07004233 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004234 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004235
Jeff Johnson295189b2012-06-20 16:38:30 -07004236 wdiKeepAliveCb: callback for passing back the response
4237 of the Keep Alive operation received from the
4238 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004239
Jeff Johnson295189b2012-06-20 16:38:30 -07004240 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004241 callback
4242
Jeff Johnson295189b2012-06-20 16:38:30 -07004243 @see WDI_PostAssocReq
4244 @return Result of the function call
4245*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004246WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004247WDI_KeepAliveReq
4248(
4249 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4250 WDI_KeepAliveCb wdiKeepAliveCb,
4251 void* pUserData
4252)
4253{
4254 WDI_EventInfoType wdiEventData;
4255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4256
4257 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004258 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004259 ------------------------------------------------------------------------*/
4260 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4261 {
4262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4263 "WDI_KeepAliveReq: WDI API call before module "
4264 "is initialized - Fail request");
4265
Jeff Johnsone7245742012-09-05 17:12:55 -07004266 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004267 }
4268
4269 /*------------------------------------------------------------------------
4270 Fill in Event data and post to the Main FSM
4271 ------------------------------------------------------------------------*/
4272 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004273 wdiEventData.pEventData = pwdiKeepAliveParams;
4274 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4275 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004276 wdiEventData.pUserData = pUserData;
4277
4278 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4279}/*WDI_KeepAliveReq*/
4280
4281/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004282 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004283 wants to set the Wowl Bcast ptrn to minimize unnecessary
4284 host wakeup due to broadcast traffic while in power
4285 save. Upon the call of this API the WLAN DAL will pack
4286 and send a HAL Wowl Bcast ptrn request message to the
4287 lower RIVA sub-system if DAL is in state STARTED.
4288
4289 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004290 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004291
4292 WDI_PostAssocReq must have been called.
4293
Jeff Johnsone7245742012-09-05 17:12:55 -07004294 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004295 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004296
Jeff Johnson295189b2012-06-20 16:38:30 -07004297 wdiWowlAddBcPtrnCb: callback for passing back the
4298 response of the add Wowl bcast ptrn operation received
4299 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004300
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004302 callback
4303
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 @see WDI_PostAssocReq
4305 @return Result of the function call
4306*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004307WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004308WDI_WowlAddBcPtrnReq
4309(
4310 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4311 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4312 void* pUserData
4313)
4314{
4315 WDI_EventInfoType wdiEventData;
4316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4317
4318 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004319 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004320 ------------------------------------------------------------------------*/
4321 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4322 {
4323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4324 "WDI API call before module is initialized - Fail request");
4325
Jeff Johnsone7245742012-09-05 17:12:55 -07004326 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004327 }
4328
4329 /*------------------------------------------------------------------------
4330 Fill in Event data and post to the Main FSM
4331 ------------------------------------------------------------------------*/
4332 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004333 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004334 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004335 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004336 wdiEventData.pUserData = pUserData;
4337
4338 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4339}/*WDI_WowlAddBcPtrnReq*/
4340
4341/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004342 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004343 wants to clear the Wowl Bcast ptrn. Upon the call of
4344 this API the WLAN DAL will pack and send a HAL delete
4345 Wowl Bcast ptrn request message to the lower RIVA
4346 sub-system if DAL is in state STARTED.
4347
4348 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004349 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004350
4351 WDI_WowlAddBcPtrnReq must have been called.
4352
Jeff Johnsone7245742012-09-05 17:12:55 -07004353 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004354 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004355
Jeff Johnson295189b2012-06-20 16:38:30 -07004356 wdiWowlDelBcPtrnCb: callback for passing back the
4357 response of the del Wowl bcast ptrn operation received
4358 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004359
Jeff Johnson295189b2012-06-20 16:38:30 -07004360 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004361 callback
4362
Jeff Johnson295189b2012-06-20 16:38:30 -07004363 @see WDI_WowlAddBcPtrnReq
4364 @return Result of the function call
4365*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004366WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004367WDI_WowlDelBcPtrnReq
4368(
4369 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4370 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4371 void* pUserData
4372)
4373{
4374 WDI_EventInfoType wdiEventData;
4375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4376
4377 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004378 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004379 ------------------------------------------------------------------------*/
4380 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4381 {
4382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4383 "WDI API call before module is initialized - Fail request");
4384
Jeff Johnsone7245742012-09-05 17:12:55 -07004385 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 }
4387
4388 /*------------------------------------------------------------------------
4389 Fill in Event data and post to the Main FSM
4390 ------------------------------------------------------------------------*/
4391 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004392 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004393 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004394 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004395 wdiEventData.pUserData = pUserData;
4396
4397 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4398}/*WDI_WowlDelBcPtrnReq*/
4399
4400/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004401 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004402 wants to enter the Wowl state to minimize unnecessary
4403 host wakeup while in power save. Upon the call of this
4404 API the WLAN DAL will pack and send a HAL Wowl enter
4405 request message to the lower RIVA sub-system if DAL is
4406 in state STARTED.
4407
4408 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004409 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004410
4411 WDI_PostAssocReq must have been called.
4412
Jeff Johnsone7245742012-09-05 17:12:55 -07004413 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004414 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004415
Jeff Johnson295189b2012-06-20 16:38:30 -07004416 wdiWowlEnterReqCb: callback for passing back the
4417 response of the enter Wowl operation received from the
4418 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004419
Jeff Johnson295189b2012-06-20 16:38:30 -07004420 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004421 callback
4422
Jeff Johnson295189b2012-06-20 16:38:30 -07004423 @see WDI_PostAssocReq
4424 @return Result of the function call
4425*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004426WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004427WDI_WowlEnterReq
4428(
4429 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4430 WDI_WowlEnterReqCb wdiWowlEnterCb,
4431 void* pUserData
4432)
4433{
4434 WDI_EventInfoType wdiEventData;
4435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4436
4437 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004438 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004439 ------------------------------------------------------------------------*/
4440 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4441 {
4442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4443 "WDI API call before module is initialized - Fail request");
4444
Jeff Johnsone7245742012-09-05 17:12:55 -07004445 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004446 }
4447
4448 /*------------------------------------------------------------------------
4449 Fill in Event data and post to the Main FSM
4450 ------------------------------------------------------------------------*/
4451 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004452 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004453 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004454 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004455 wdiEventData.pUserData = pUserData;
4456
4457 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4458}/*WDI_WowlEnterReq*/
4459
4460/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004461 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004462 wants to exit the Wowl state. Upon the call of this API
4463 the WLAN DAL will pack and send a HAL Wowl exit request
4464 message to the lower RIVA sub-system if DAL is in state
4465 STARTED.
4466
4467 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004468 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004469
4470 WDI_WowlEnterReq must have been called.
4471
Jeff Johnsone7245742012-09-05 17:12:55 -07004472 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004473 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004474
Jeff Johnson295189b2012-06-20 16:38:30 -07004475 wdiWowlExitReqCb: callback for passing back the response
4476 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004477
Jeff Johnson295189b2012-06-20 16:38:30 -07004478 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004479 callback
4480
Jeff Johnson295189b2012-06-20 16:38:30 -07004481 @see WDI_WowlEnterReq
4482 @return Result of the function call
4483*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004484WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004485WDI_WowlExitReq
4486(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004487 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004488 WDI_WowlExitReqCb wdiWowlExitCb,
4489 void* pUserData
4490)
4491{
4492 WDI_EventInfoType wdiEventData;
4493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4494
4495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004497 ------------------------------------------------------------------------*/
4498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4499 {
4500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4501 "WDI API call before module is initialized - Fail request");
4502
Jeff Johnsone7245742012-09-05 17:12:55 -07004503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004504 }
4505
4506 /*------------------------------------------------------------------------
4507 Fill in Event data and post to the Main FSM
4508 ------------------------------------------------------------------------*/
4509 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004510 wdiEventData.pEventData = pwdiWowlExitParams;
4511 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004512 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004513 wdiEventData.pUserData = pUserData;
4514
4515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4516}/*WDI_WowlExitReq*/
4517
4518/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004519 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004520 the upper MAC wants to dynamically adjusts the listen
4521 interval based on the WLAN/MSM activity. Upon the call
4522 of this API the WLAN DAL will pack and send a HAL
4523 configure Apps Cpu Wakeup State request message to the
4524 lower RIVA sub-system.
4525
4526 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004527 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004528
Jeff Johnsone7245742012-09-05 17:12:55 -07004529
4530 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004531 Apps Cpu Wakeup State as specified by the
4532 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004533
Jeff Johnson295189b2012-06-20 16:38:30 -07004534 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4535 back the response of the configure Apps Cpu Wakeup State
4536 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004537
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004539 callback
4540
Jeff Johnson295189b2012-06-20 16:38:30 -07004541 @return Result of the function call
4542*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004543WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004544WDI_ConfigureAppsCpuWakeupStateReq
4545(
4546 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4547 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4548 void* pUserData
4549)
4550{
4551 WDI_EventInfoType wdiEventData;
4552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4553
4554 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004555 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004556 ------------------------------------------------------------------------*/
4557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4558 {
4559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4560 "WDI API call before module is initialized - Fail request");
4561
Jeff Johnsone7245742012-09-05 17:12:55 -07004562 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004563 }
4564
4565 /*------------------------------------------------------------------------
4566 Fill in Event data and post to the Main FSM
4567 ------------------------------------------------------------------------*/
4568 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004569 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4570 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4571 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004572 wdiEventData.pUserData = pUserData;
4573
4574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4575}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 to to perform a flush operation on a given AC. Upon the
4579 call of this API the WLAN DAL will pack and send a HAL
4580 Flush AC request message to the lower RIVA sub-system if
4581 DAL is in state STARTED.
4582
4583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004585
4586 WDI_AddBAReq must have been called.
4587
Jeff Johnsone7245742012-09-05 17:12:55 -07004588 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004589 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004590
Jeff Johnson295189b2012-06-20 16:38:30 -07004591 wdiFlushAcRspCb: callback for passing back the response
4592 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004593
Jeff Johnson295189b2012-06-20 16:38:30 -07004594 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004595 callback
4596
Jeff Johnson295189b2012-06-20 16:38:30 -07004597 @see WDI_AddBAReq
4598 @return Result of the function call
4599*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004600WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004601WDI_FlushAcReq
4602(
4603 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4604 WDI_FlushAcRspCb wdiFlushAcRspCb,
4605 void* pUserData
4606)
4607{
4608 WDI_EventInfoType wdiEventData;
4609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4610
4611 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004613 ------------------------------------------------------------------------*/
4614 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4615 {
4616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4617 "WDI API call before module is initialized - Fail request");
4618
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 }
4621
4622 /*------------------------------------------------------------------------
4623 Fill in Event data and post to the Main FSM
4624 ------------------------------------------------------------------------*/
4625 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004626 wdiEventData.pEventData = pwdiFlushAcReqParams;
4627 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4628 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004629 wdiEventData.pUserData = pUserData;
4630
4631 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4632
4633}/*WDI_FlushAcReq*/
4634
4635/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004636 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004637 wants to notify the lower mac on a BT AMP event. This is
4638 to inform BTC-SLM that some BT AMP event occurred. Upon
4639 the call of this API the WLAN DAL will pack and send a
4640 HAL BT AMP event request message to the lower RIVA
4641 sub-system if DAL is in state STARTED.
4642
4643 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004645
Jeff Johnsone7245742012-09-05 17:12:55 -07004646
4647 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004648 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004649
Jeff Johnson295189b2012-06-20 16:38:30 -07004650 wdiBtAmpEventRspCb: callback for passing back the
4651 response of the BT AMP event operation received from the
4652 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004653
Jeff Johnson295189b2012-06-20 16:38:30 -07004654 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004655 callback
4656
Jeff Johnson295189b2012-06-20 16:38:30 -07004657 @return Result of the function call
4658*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004659WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004660WDI_BtAmpEventReq
4661(
4662 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4663 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4664 void* pUserData
4665)
4666{
4667 WDI_EventInfoType wdiEventData;
4668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4669
4670 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004671 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004672 ------------------------------------------------------------------------*/
4673 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4674 {
4675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4676 "WDI API call before module is initialized - Fail request");
4677
Jeff Johnsone7245742012-09-05 17:12:55 -07004678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004679 }
4680
4681 /*------------------------------------------------------------------------
4682 Fill in Event data and post to the Main FSM
4683 ------------------------------------------------------------------------*/
4684 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004685 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4686 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4687 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004688 wdiEventData.pUserData = pUserData;
4689
4690 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4691
4692}/*WDI_BtAmpEventReq*/
4693
Jeff Johnsone7245742012-09-05 17:12:55 -07004694#ifdef FEATURE_OEM_DATA_SUPPORT
4695/**
4696 @brief WDI_Start Oem Data Req will be called when the upper MAC
4697 wants to notify the lower mac on a oem data Req event.Upon
4698 the call of this API the WLAN DAL will pack and send a
4699 HAL OEM Data Req event request message to the lower RIVA
4700 sub-system if DAL is in state STARTED.
4701
4702 In state BUSY this request will be queued. Request won't
4703 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004704
4705
Jeff Johnsone7245742012-09-05 17:12:55 -07004706
4707 @param pwdiOemDataReqParams: the Oem Data Req as
4708 specified by the Device Interface
4709
4710 wdiStartOemDataRspCb: callback for passing back the
4711 response of the Oem Data Req received from the
4712 device
4713
4714 pUserData: user data will be passed back with the
4715 callback
4716
4717 @return Result of the function call
4718*/
4719WDI_Status
4720WDI_StartOemDataReq
4721(
4722 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4723 WDI_oemDataRspCb wdiOemDataRspCb,
4724 void* pUserData
4725)
4726{
4727 WDI_EventInfoType wdiEventData;
4728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4729
4730 /*------------------------------------------------------------------------
4731 Sanity Check
4732 ------------------------------------------------------------------------*/
4733 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4734 {
4735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4736 "WDI API call before module is initialized - Fail request");
4737
4738 return WDI_STATUS_E_NOT_ALLOWED;
4739 }
4740
4741 /*------------------------------------------------------------------------
4742 Fill in Event data and post to the Main FSM
4743 ------------------------------------------------------------------------*/
4744 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4745 wdiEventData.pEventData = pwdiOemDataReqParams;
4746 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4747 wdiEventData.pCBfnc = wdiOemDataRspCb;
4748 wdiEventData.pUserData = pUserData;
4749
4750 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4751
4752
4753}
4754
4755#endif
4756
4757
4758/*========================================================================
4759
Jeff Johnson295189b2012-06-20 16:38:30 -07004760 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004761
Jeff Johnson295189b2012-06-20 16:38:30 -07004762==========================================================================*/
4763/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004764 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004765 the WLAN HW to change the current channel of operation.
4766 Upon the call of this API the WLAN DAL will pack and
4767 send a HAL Start request message to the lower RIVA
4768 sub-system if DAL is in state STARTED.
4769
4770 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004771 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004772
4773 WDI_Start must have been called.
4774
Jeff Johnsone7245742012-09-05 17:12:55 -07004775 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004776 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004777
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 wdiSwitchChRspCb: callback for passing back the response
4779 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004780
Jeff Johnson295189b2012-06-20 16:38:30 -07004781 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004782 callback
4783
Jeff Johnson295189b2012-06-20 16:38:30 -07004784 @see WDI_Start
4785 @return Result of the function call
4786*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004787WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004788WDI_SwitchChReq
4789(
4790 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4791 WDI_SwitchChRspCb wdiSwitchChRspCb,
4792 void* pUserData
4793)
4794{
4795 WDI_EventInfoType wdiEventData;
4796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4797
4798 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004799 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004800 ------------------------------------------------------------------------*/
4801 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4802 {
4803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4804 "WDI API call before module is initialized - Fail request");
4805
Jeff Johnsone7245742012-09-05 17:12:55 -07004806 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004807 }
4808
4809 /*------------------------------------------------------------------------
4810 Fill in Event data and post to the Main FSM
4811 ------------------------------------------------------------------------*/
4812 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004813 wdiEventData.pEventData = pwdiSwitchChReqParams;
4814 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4815 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004816 wdiEventData.pUserData = pUserData;
4817
4818 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4819
4820}/*WDI_SwitchChReq*/
4821
4822
4823/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004825 wishes to add or update a STA in HW. Upon the call of
4826 this API the WLAN DAL will pack and send a HAL Start
4827 message request message to the lower RIVA sub-system if
4828 DAL is in state STARTED.
4829
4830 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004832
4833 WDI_Start must have been called.
4834
Jeff Johnsone7245742012-09-05 17:12:55 -07004835 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004836 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004837
Jeff Johnson295189b2012-06-20 16:38:30 -07004838 wdiConfigSTARspCb: callback for passing back the
4839 response of the config STA operation received from the
4840 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004841
Jeff Johnson295189b2012-06-20 16:38:30 -07004842 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004843 callback
4844
Jeff Johnson295189b2012-06-20 16:38:30 -07004845 @see WDI_Start
4846 @return Result of the function call
4847*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004848WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004849WDI_ConfigSTAReq
4850(
4851 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4852 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4853 void* pUserData
4854)
4855{
4856 WDI_EventInfoType wdiEventData;
4857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4858
4859 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004860 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004861 ------------------------------------------------------------------------*/
4862 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4863 {
4864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4865 "WDI API call before module is initialized - Fail request");
4866
Jeff Johnsone7245742012-09-05 17:12:55 -07004867 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004868 }
4869
4870 /*------------------------------------------------------------------------
4871 Fill in Event data and post to the Main FSM
4872 ------------------------------------------------------------------------*/
4873 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004874 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4875 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4876 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004877 wdiEventData.pUserData = pUserData;
4878
4879 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4880
4881}/*WDI_ConfigSTAReq*/
4882
4883/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004884 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004885 wants to change the state of an ongoing link. Upon the
4886 call of this API the WLAN DAL will pack and send a HAL
4887 Start message request message to the lower RIVA
4888 sub-system if DAL is in state STARTED.
4889
4890 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004891 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004892
4893 WDI_JoinStartReq must have been called.
4894
Jeff Johnsone7245742012-09-05 17:12:55 -07004895 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004896 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004897
Jeff Johnson295189b2012-06-20 16:38:30 -07004898 wdiSetLinkStateRspCb: callback for passing back the
4899 response of the set link state operation received from
4900 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004901
Jeff Johnson295189b2012-06-20 16:38:30 -07004902 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 callback
4904
Jeff Johnson295189b2012-06-20 16:38:30 -07004905 @see WDI_JoinStartReq
4906 @return Result of the function call
4907*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004908WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004909WDI_SetLinkStateReq
4910(
4911 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4912 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4913 void* pUserData
4914)
4915{
4916 WDI_EventInfoType wdiEventData;
4917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4918
4919 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004920 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004921 ------------------------------------------------------------------------*/
4922 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4923 {
4924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4925 "WDI API call before module is initialized - Fail request");
4926
Jeff Johnsone7245742012-09-05 17:12:55 -07004927 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004928 }
4929
4930 /*------------------------------------------------------------------------
4931 Fill in Event data and post to the Main FSM
4932 ------------------------------------------------------------------------*/
4933 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004934 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4935 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4936 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004937 wdiEventData.pUserData = pUserData;
4938
4939 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4940
4941}/*WDI_SetLinkStateReq*/
4942
4943
4944/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004945 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004946 to get statistics (MIB counters) from the device. Upon
4947 the call of this API the WLAN DAL will pack and send a
4948 HAL Start request message to the lower RIVA sub-system
4949 if DAL is in state STARTED.
4950
4951 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004952 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004953
4954 WDI_Start must have been called.
4955
Jeff Johnsone7245742012-09-05 17:12:55 -07004956 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004957 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004958
Jeff Johnson295189b2012-06-20 16:38:30 -07004959 wdiGetStatsRspCb: callback for passing back the response
4960 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004961
Jeff Johnson295189b2012-06-20 16:38:30 -07004962 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004963 callback
4964
Jeff Johnson295189b2012-06-20 16:38:30 -07004965 @see WDI_Start
4966 @return Result of the function call
4967*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004968WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004969WDI_GetStatsReq
4970(
4971 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4972 WDI_GetStatsRspCb wdiGetStatsRspCb,
4973 void* pUserData
4974)
4975{
4976 WDI_EventInfoType wdiEventData;
4977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4978
4979 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004980 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004981 ------------------------------------------------------------------------*/
4982 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4983 {
4984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4985 "WDI API call before module is initialized - Fail request");
4986
Jeff Johnsone7245742012-09-05 17:12:55 -07004987 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004988 }
4989
4990 /*------------------------------------------------------------------------
4991 Fill in Event data and post to the Main FSM
4992 ------------------------------------------------------------------------*/
4993 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004994 wdiEventData.pEventData = pwdiGetStatsReqParams;
4995 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4996 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004997 wdiEventData.pUserData = pUserData;
4998
4999 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5000
5001}/*WDI_GetStatsReq*/
5002
Srinivas Girigowda2471d832013-01-25 13:33:11 -08005003#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
5004/**
5005 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5006 to get roam rssi from the device. Upon
5007 the call of this API the WLAN DAL will pack and send a
5008 HAL Start request message to the lower RIVA sub-system
5009 if DAL is in state STARTED.
5010
5011 In state BUSY this request will be queued. Request won't
5012 be allowed in any other state.
5013
5014 WDI_Start must have been called.
5015
5016 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5017 specified by the Device Interface
5018
5019 wdiGetRoamRssiRspCb: callback for passing back the response
5020 of the get stats operation received from the device
5021
5022 pUserData: user data will be passed back with the
5023 callback
5024
5025 @see WDI_Start
5026 @return Result of the function call
5027*/
5028WDI_Status
5029WDI_GetRoamRssiReq
5030(
5031 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5032 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5033 void* pUserData
5034)
5035{
5036 WDI_EventInfoType wdiEventData;
5037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5038
5039 /*------------------------------------------------------------------------
5040 Sanity Check
5041 ------------------------------------------------------------------------*/
5042 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5043 {
5044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5045 "WDI API call before module is initialized - Fail request");
5046
5047 return WDI_STATUS_E_NOT_ALLOWED;
5048 }
5049 /*------------------------------------------------------------------------
5050 Fill in Event data and post to the Main FSM
5051 ------------------------------------------------------------------------*/
5052 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5053 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5054 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5055 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5056 wdiEventData.pUserData = pUserData;
5057
5058 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5059
5060}/*WDI_GetRoamRssiReq*/
5061#endif
5062
Jeff Johnson295189b2012-06-20 16:38:30 -07005063
5064/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005065 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005066 it wishes to change the configuration of the WLAN
5067 Device. Upon the call of this API the WLAN DAL will pack
5068 and send a HAL Update CFG request message to the lower
5069 RIVA sub-system if DAL is in state STARTED.
5070
5071 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005072 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005073
5074 WDI_Start must have been called.
5075
Jeff Johnsone7245742012-09-05 17:12:55 -07005076 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005077 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005078
Jeff Johnson295189b2012-06-20 16:38:30 -07005079 wdiUpdateCfgsRspCb: callback for passing back the
5080 response of the update cfg operation received from the
5081 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005082
Jeff Johnson295189b2012-06-20 16:38:30 -07005083 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005084 callback
5085
Jeff Johnson295189b2012-06-20 16:38:30 -07005086 @see WDI_Start
5087 @return Result of the function call
5088*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005089WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005090WDI_UpdateCfgReq
5091(
5092 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5093 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5094 void* pUserData
5095)
5096{
5097 WDI_EventInfoType wdiEventData;
5098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5099
5100 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005101 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005102 ------------------------------------------------------------------------*/
5103 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5104 {
5105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5106 "WDI API call before module is initialized - Fail request");
5107
Jeff Johnsone7245742012-09-05 17:12:55 -07005108 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005109 }
5110
5111 /*------------------------------------------------------------------------
5112 Fill in Event data and post to the Main FSM
5113 ------------------------------------------------------------------------*/
5114 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005115 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5116 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5117 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005118 wdiEventData.pUserData = pUserData;
5119
5120 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5121
5122}/*WDI_UpdateCfgReq*/
5123
5124
5125
5126/**
5127 @brief WDI_AddBAReq will be called when the upper MAC has setup
5128 successfully a BA session and needs to notify the HW for
5129 the appropriate settings to take place. Upon the call of
5130 this API the WLAN DAL will pack and send a HAL Add BA
5131 request message to the lower RIVA sub-system if DAL is
5132 in state STARTED.
5133
5134 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005135 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005136
5137 WDI_PostAssocReq must have been called.
5138
5139 @param wdiAddBAReqParams: the add BA parameters as specified by
5140 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005141
Jeff Johnson295189b2012-06-20 16:38:30 -07005142 wdiAddBARspCb: callback for passing back the response of
5143 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005144
Jeff Johnson295189b2012-06-20 16:38:30 -07005145 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005146 callback
5147
Jeff Johnson295189b2012-06-20 16:38:30 -07005148 @see WDI_PostAssocReq
5149 @return Result of the function call
5150*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005151WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005152WDI_AddBAReq
5153(
5154 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5155 WDI_AddBARspCb wdiAddBARspCb,
5156 void* pUserData
5157)
5158{
5159 WDI_EventInfoType wdiEventData;
5160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5161
5162 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005163 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005164 ------------------------------------------------------------------------*/
5165 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5166 {
5167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5168 "WDI API call before module is initialized - Fail request");
5169
Jeff Johnsone7245742012-09-05 17:12:55 -07005170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005171 }
5172
5173 /*------------------------------------------------------------------------
5174 Fill in Event data and post to the Main FSM
5175 ------------------------------------------------------------------------*/
5176 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005177 wdiEventData.pEventData = pwdiAddBAReqParams;
5178 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5179 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005180 wdiEventData.pUserData = pUserData;
5181
5182 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5183
5184}/*WDI_AddBAReq*/
5185
5186
5187/**
5188 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5189 successfully a BA session and needs to notify the HW for
5190 the appropriate settings to take place. Upon the call of
5191 this API the WLAN DAL will pack and send a HAL Add BA
5192 request message to the lower RIVA sub-system if DAL is
5193 in state STARTED.
5194
5195 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005196 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005197
5198 WDI_PostAssocReq must have been called.
5199
5200 @param wdiAddBAReqParams: the add BA parameters as specified by
5201 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005202
Jeff Johnson295189b2012-06-20 16:38:30 -07005203 wdiAddBARspCb: callback for passing back the response of
5204 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005205
Jeff Johnson295189b2012-06-20 16:38:30 -07005206 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005207 callback
5208
Jeff Johnson295189b2012-06-20 16:38:30 -07005209 @see WDI_PostAssocReq
5210 @return Result of the function call
5211*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005212WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005213WDI_TriggerBAReq
5214(
5215 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5216 WDI_TriggerBARspCb wdiTriggerBARspCb,
5217 void* pUserData
5218)
5219{
5220 WDI_EventInfoType wdiEventData;
5221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5222
5223 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005224 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005225 ------------------------------------------------------------------------*/
5226 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5227 {
5228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5229 "WDI API call before module is initialized - Fail request");
5230
Jeff Johnsone7245742012-09-05 17:12:55 -07005231 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005232 }
5233
5234 /*------------------------------------------------------------------------
5235 Fill in Event data and post to the Main FSM
5236 ------------------------------------------------------------------------*/
5237 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005238 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5239 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5240 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005241 wdiEventData.pUserData = pUserData;
5242
5243 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5244
5245}/*WDI_AddBAReq*/
5246
5247/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005248 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005249 wishes to update any of the Beacon parameters used by HW.
5250 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5251 message to the lower RIVA sub-system if DAL is in state
5252 STARTED.
5253
5254 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005255 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005256
5257 WDI_PostAssocReq must have been called.
5258
Jeff Johnsone7245742012-09-05 17:12:55 -07005259 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005260 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005261
Jeff Johnson295189b2012-06-20 16:38:30 -07005262 wdiUpdateBeaconParamsRspCb: callback for passing back the
5263 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005264
Jeff Johnson295189b2012-06-20 16:38:30 -07005265 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005266 callback
5267
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 @see WDI_PostAssocReq
5269 @return Result of the function call
5270*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005271WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005272WDI_UpdateBeaconParamsReq
5273(
5274 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5275 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5276 void* pUserData
5277)
5278{
5279 WDI_EventInfoType wdiEventData;
5280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5281
5282 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005283 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005284 ------------------------------------------------------------------------*/
5285 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5286 {
5287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5288 "WDI API call before module is initialized - Fail request");
5289
Jeff Johnsone7245742012-09-05 17:12:55 -07005290 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005291 }
5292
5293 /*------------------------------------------------------------------------
5294 Fill in Event data and post to the Main FSM
5295 ------------------------------------------------------------------------*/
5296 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005297 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5298 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5299 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005300 wdiEventData.pUserData = pUserData;
5301
5302 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5303
5304}/*WDI_UpdateBeaconParamsReq*/
5305
5306/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 wishes to update the Beacon template used by HW.
5309 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5310 message to the lower RIVA sub-system if DAL is in state
5311 STARTED.
5312
5313 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005314 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005315
5316 WDI_PostAssocReq must have been called.
5317
Jeff Johnsone7245742012-09-05 17:12:55 -07005318 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005320
Jeff Johnson295189b2012-06-20 16:38:30 -07005321 wdiSendBeaconParamsRspCb: callback for passing back the
5322 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005323
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005325 callback
5326
Jeff Johnson295189b2012-06-20 16:38:30 -07005327 @see WDI_PostAssocReq
5328 @return Result of the function call
5329*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005330WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005331WDI_SendBeaconParamsReq
5332(
5333 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5334 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5335 void* pUserData
5336)
5337{
5338 WDI_EventInfoType wdiEventData;
5339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5340
5341 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005342 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005343 ------------------------------------------------------------------------*/
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
Jeff Johnsone7245742012-09-05 17:12:55 -07005349 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005350 }
5351
5352 /*------------------------------------------------------------------------
5353 Fill in Event data and post to the Main FSM
5354 ------------------------------------------------------------------------*/
5355 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005356 wdiEventData.pEventData = pwdiSendBeaconParams;
5357 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5358 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005359 wdiEventData.pUserData = pUserData;
5360
5361 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5362
5363}/*WDI_SendBeaconParamsReq*/
5364
5365/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005366 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005367 upper MAC wants to update the probe response template to
5368 be transmitted as Soft AP
5369 Upon the call of this API the WLAN DAL will
5370 pack and send the probe rsp template message to the
5371 lower 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
Jeff Johnsone7245742012-09-05 17:12:55 -07005377 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005378 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005379
Jeff Johnson295189b2012-06-20 16:38:30 -07005380 wdiSendBeaconParamsRspCb: callback for passing back the
5381 response of the Send Beacon Params operation received
5382 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005383
Jeff Johnson295189b2012-06-20 16:38:30 -07005384 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005385 callback
5386
Jeff Johnson295189b2012-06-20 16:38:30 -07005387 @see WDI_AddBAReq
5388 @return Result of the function call
5389*/
5390
Jeff Johnsone7245742012-09-05 17:12:55 -07005391WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005392WDI_UpdateProbeRspTemplateReq
5393(
5394 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5395 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
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_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005417 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5418 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5419 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005420 wdiEventData.pUserData = pUserData;
5421
5422 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5423
5424}/*WDI_UpdateProbeRspTemplateReq*/
5425
5426/**
5427 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5428 to the NV memory.
5429
5430
5431 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5432 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005433
Jeff Johnson295189b2012-06-20 16:38:30 -07005434 wdiNvDownloadRspCb: callback for passing back the response of
5435 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005436
Jeff Johnson295189b2012-06-20 16:38:30 -07005437 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005438 callback
5439
Jeff Johnson295189b2012-06-20 16:38:30 -07005440 @see WDI_PostAssocReq
5441 @return Result of the function call
5442*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005443WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005444WDI_NvDownloadReq
5445(
5446 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5447 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5448 void* pUserData
5449)
5450{
5451 WDI_EventInfoType wdiEventData;
5452
5453 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005454 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005455 ------------------------------------------------------------------------*/
5456 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5457 {
5458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5459 "WDI API call before module is initialized - Fail request");
5460
Jeff Johnsone7245742012-09-05 17:12:55 -07005461 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 }
5463
5464 /*------------------------------------------------------------------------
5465 Fill in Event data and post to the Main FSM
5466 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005467 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5468 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5469 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5470 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005471 wdiEventData.pUserData = pUserData;
5472
5473 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5474
5475}/*WDI_NVDownloadReq*/
5476
Jeff Johnson295189b2012-06-20 16:38:30 -07005477/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005478 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005479 upper MAC wants to send Notice of Absence
5480 Upon the call of this API the WLAN DAL will
5481 pack and send the probe rsp template message to the
5482 lower RIVA sub-system if DAL is in state STARTED.
5483
5484 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005485 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005486
5487
Jeff Johnsone7245742012-09-05 17:12:55 -07005488 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005489 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005490
Jeff Johnson295189b2012-06-20 16:38:30 -07005491 wdiSendBeaconParamsRspCb: callback for passing back the
5492 response of the Send Beacon Params operation received
5493 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005494
Jeff Johnson295189b2012-06-20 16:38:30 -07005495 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005496 callback
5497
Jeff Johnson295189b2012-06-20 16:38:30 -07005498 @see WDI_AddBAReq
5499 @return Result of the function call
5500*/
5501WDI_Status
5502WDI_SetP2PGONOAReq
5503(
5504 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5505 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5506 void* pUserData
5507)
5508{
5509 WDI_EventInfoType wdiEventData;
5510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5511
5512 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005513 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005514 ------------------------------------------------------------------------*/
5515 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5516 {
5517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5518 "WDI API call before module is initialized - Fail request");
5519
Jeff Johnsone7245742012-09-05 17:12:55 -07005520 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005521 }
5522
5523 /*------------------------------------------------------------------------
5524 Fill in Event data and post to the Main FSM
5525 ------------------------------------------------------------------------*/
5526 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005527 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5528 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5529 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 wdiEventData.pUserData = pUserData;
5531
5532 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5533
5534}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005535
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305536#ifdef FEATURE_WLAN_TDLS
5537/**
5538 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5539 upper MAC wants to send TDLS Link Establish Request Parameters
5540 Upon the call of this API the WLAN DAL will
5541 pack and send the TDLS Link Establish Request message to the
5542 lower RIVA sub-system if DAL is in state STARTED.
5543
5544 In state BUSY this request will be queued. Request won't
5545 be allowed in any other state.
5546
5547
5548 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5549 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5550
5551 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5552 response of the TDLS Link Establish request received
5553 from the device
5554
5555 pUserData: user data will be passed back with the
5556 callback
5557
5558 @see
5559 @return Result of the function call
5560*/
5561WDI_Status
5562WDI_SetTDLSLinkEstablishReq
5563(
5564 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5565 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5566 void* pUserData
5567)
5568{
5569 WDI_EventInfoType wdiEventData;
5570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5571
5572 /*------------------------------------------------------------------------
5573 Sanity Check
5574 ------------------------------------------------------------------------*/
5575 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5576 {
5577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5578 "WDI API call before module is initialized - Fail request");
5579
5580 return WDI_STATUS_E_NOT_ALLOWED;
5581 }
5582
5583 /*------------------------------------------------------------------------
5584 Fill in Event data and post to the Main FSM
5585 ------------------------------------------------------------------------*/
5586 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5587 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5588 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5589 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5590 wdiEventData.pUserData = pUserData;
5591
5592 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5593
5594}/*WDI_SetTDLSLinkEstablishReq*/
5595#endif
5596
Jeff Johnson295189b2012-06-20 16:38:30 -07005597/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005598 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005599 UMAC wanted to add STA self while opening any new session
5600 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005601 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005602
5603
Jeff Johnsone7245742012-09-05 17:12:55 -07005604 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005605 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005606
Jeff Johnson295189b2012-06-20 16:38:30 -07005607 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005608 callback
5609
5610 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 @return Result of the function call
5612*/
5613WDI_Status
5614WDI_AddSTASelfReq
5615(
5616 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5617 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5618 void* pUserData
5619)
5620{
5621 WDI_EventInfoType wdiEventData;
5622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5623
5624 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005625 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005626 ------------------------------------------------------------------------*/
5627 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5628 {
5629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5630 "WDI API call before module is initialized - Fail request");
5631
Jeff Johnsone7245742012-09-05 17:12:55 -07005632 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005633 }
5634
5635 /*------------------------------------------------------------------------
5636 Fill in Event data and post to the Main FSM
5637 ------------------------------------------------------------------------*/
5638 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005639 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5640 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5641 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005642 wdiEventData.pUserData = pUserData;
5643
5644 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5645
5646}/*WDI_AddSTASelfReq*/
5647
5648
Jeff Johnsone7245742012-09-05 17:12:55 -07005649#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005650/**
5651 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5652 the device of a successful add TSpec negotiation. HW
5653 needs to receive the TSpec Info from the UMAC in order
5654 to configure properly the QoS data traffic. Upon the
5655 call of this API the WLAN DAL will pack and send a HAL
5656 Add TS request message to the lower RIVA sub-system if
5657 DAL is in state STARTED.
5658
5659 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005660 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005661
5662 WDI_PostAssocReq must have been called.
5663
5664 @param wdiAddTsReqParams: the add TS parameters as specified by
5665 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005666
Jeff Johnson295189b2012-06-20 16:38:30 -07005667 wdiAddTsRspCb: callback for passing back the response of
5668 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005669
Jeff Johnson295189b2012-06-20 16:38:30 -07005670 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005671 callback
5672
Jeff Johnson295189b2012-06-20 16:38:30 -07005673 @see WDI_PostAssocReq
5674 @return Result of the function call
5675*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005676WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005677WDI_AggrAddTSReq
5678(
5679 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5680 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5681 void* pUserData
5682)
5683{
5684 WDI_EventInfoType wdiEventData;
5685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5686
5687 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005688 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005689 ------------------------------------------------------------------------*/
5690 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5691 {
5692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5693 "WDI API call before module is initialized - Fail request");
5694
Jeff Johnsone7245742012-09-05 17:12:55 -07005695 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005696 }
5697
5698 /*------------------------------------------------------------------------
5699 Fill in Event data and post to the Main FSM
5700 ------------------------------------------------------------------------*/
5701 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005702 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5703 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5704 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005705 wdiEventData.pUserData = pUserData;
5706
5707 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5708
5709}/*WDI_AggrAddTSReq*/
5710
5711#endif /* WLAN_FEATURE_VOWIFI_11R */
5712
Jeff Johnson295189b2012-06-20 16:38:30 -07005713/**
5714 @brief WDI_FTMCommandReq
5715 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005716
5717 @param ftmCommandReq: FTM Command Body
5718 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005719 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005720
Jeff Johnson295189b2012-06-20 16:38:30 -07005721 @see
5722 @return Result of the function call
5723*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005724WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005725WDI_FTMCommandReq
5726(
5727 WDI_FTMCommandReqType *ftmCommandReq,
5728 WDI_FTMCommandRspCb ftmCommandRspCb,
5729 void *pUserData
5730)
5731{
5732 WDI_EventInfoType wdiEventData;
5733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5734
5735 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005736 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005737 ------------------------------------------------------------------------*/
5738 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5739 {
5740 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5741 "WDI API call before module is initialized - Fail request");
5742
Jeff Johnsone7245742012-09-05 17:12:55 -07005743 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005744 }
5745
5746 /*------------------------------------------------------------------------
5747 Fill in Event data and post to the Main FSM
5748 ------------------------------------------------------------------------*/
5749 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5750 wdiEventData.pEventData = (void *)ftmCommandReq;
5751 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5752 wdiEventData.pCBfnc = ftmCommandRspCb;
5753 wdiEventData.pUserData = pUserData;
5754
5755 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5756}
Jeff Johnson295189b2012-06-20 16:38:30 -07005757/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005758 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005759
5760 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005761 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005762
5763
5764 @param pwdiResumeReqParams: as specified by
5765 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005766
Jeff Johnson295189b2012-06-20 16:38:30 -07005767 wdiResumeReqRspCb: callback for passing back the response of
5768 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005769
Jeff Johnson295189b2012-06-20 16:38:30 -07005770 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005771 callback
5772
5773 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005774 @return Result of the function call
5775*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005777WDI_HostResumeReq
5778(
5779 WDI_ResumeParamsType* pwdiResumeReqParams,
5780 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5781 void* pUserData
5782)
5783{
5784 WDI_EventInfoType wdiEventData;
5785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5786
5787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005789 ------------------------------------------------------------------------*/
5790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5791 {
5792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5793 "WDI API call before module is initialized - Fail request");
5794
Jeff Johnsone7245742012-09-05 17:12:55 -07005795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005796 }
5797
5798 /*------------------------------------------------------------------------
5799 Fill in Event data and post to the Main FSM
5800 ------------------------------------------------------------------------*/
5801 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005802 wdiEventData.pEventData = pwdiResumeReqParams;
5803 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5804 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005805 wdiEventData.pUserData = pUserData;
5806
5807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5808
5809}/*WDI_HostResumeReq*/
5810
5811/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005812 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005813
5814 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005815 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005816
5817
5818 @param pwdiDelStaSelfReqParams: as specified by
5819 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005820
Jeff Johnson295189b2012-06-20 16:38:30 -07005821 wdiDelStaSelfRspCb: callback for passing back the response of
5822 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005823
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005825 callback
5826
Jeff Johnson295189b2012-06-20 16:38:30 -07005827 @see WDI_PostAssocReq
5828 @return Result of the function call
5829*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005830WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005831WDI_DelSTASelfReq
5832(
5833 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5834 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5835 void* pUserData
5836)
5837{
5838 WDI_EventInfoType wdiEventData;
5839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5840
5841 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005842 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005843 ------------------------------------------------------------------------*/
5844 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5845 {
5846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5847 "WDI API call before module is initialized - Fail request");
5848
Jeff Johnsone7245742012-09-05 17:12:55 -07005849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005850 }
5851
5852 /*------------------------------------------------------------------------
5853 Fill in Event data and post to the Main FSM
5854 ------------------------------------------------------------------------*/
5855 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005856 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5857 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5858 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005859 wdiEventData.pUserData = pUserData;
5860
5861 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5862
5863}/*WDI_AggrAddTSReq*/
5864
5865/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005866 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5867 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 Upon the call of this API the WLAN DAL will pack
5869 and send a HAL Set Tx Per Tracking request message to the
5870 lower RIVA sub-system if DAL is in state STARTED.
5871
5872 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005873 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005874
Jeff Johnsone7245742012-09-05 17:12:55 -07005875 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005876 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005877
Jeff Johnson295189b2012-06-20 16:38:30 -07005878 pwdiSetTxPerTrackingRspCb: callback for passing back the
5879 response of the set Tx PER Tracking configurations operation received
5880 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005881
Jeff Johnson295189b2012-06-20 16:38:30 -07005882 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005883 callback
5884
Jeff Johnson295189b2012-06-20 16:38:30 -07005885 @return Result of the function call
5886*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005887WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005888WDI_SetTxPerTrackingReq
5889(
5890 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5891 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5892 void* pUserData
5893)
5894{
5895 WDI_EventInfoType wdiEventData;
5896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5897
5898 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005899 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 ------------------------------------------------------------------------*/
5901 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5902 {
5903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5904 "WDI API call before module is initialized - Fail request");
5905
Jeff Johnsone7245742012-09-05 17:12:55 -07005906 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005907 }
5908
5909 /*------------------------------------------------------------------------
5910 Fill in Event data and post to the Main FSM
5911 ------------------------------------------------------------------------*/
5912 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005913 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005914 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005915 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005916 wdiEventData.pUserData = pUserData;
5917
5918 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5919
5920}/*WDI_SetTxPerTrackingReq*/
5921
5922/**
5923 @brief WDI_SetTmLevelReq
5924 If HW Thermal condition changed, driver should react based on new
5925 HW thermal condition.
5926
5927 @param pwdiSetTmLevelReq: New thermal condition information
5928
5929 pwdiSetTmLevelRspCb: callback
5930
5931 usrData: user data will be passed back with the
5932 callback
5933
5934 @return Result of the function call
5935*/
5936WDI_Status
5937WDI_SetTmLevelReq
5938(
5939 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5940 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5941 void *usrData
5942)
5943{
5944 WDI_EventInfoType wdiEventData;
5945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5946
5947 /*------------------------------------------------------------------------
5948 Sanity Check
5949 ------------------------------------------------------------------------*/
5950 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5951 {
5952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5953 "WDI API call before module is initialized - Fail request");
5954
5955 return WDI_STATUS_E_NOT_ALLOWED;
5956 }
5957
5958 /*------------------------------------------------------------------------
5959 Fill in Event data and post to the Main FSM
5960 ------------------------------------------------------------------------*/
5961 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5962 wdiEventData.pEventData = pwdiSetTmLevelReq;
5963 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5964 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5965 wdiEventData.pUserData = usrData;
5966
5967 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5968}
5969
5970/**
5971 @brief WDI_HostSuspendInd
5972
5973 Suspend Indication from the upper layer will be sent
5974 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005975
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005977
5978 @see
5979
Jeff Johnson295189b2012-06-20 16:38:30 -07005980 @return Status of the request
5981*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005982WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005983WDI_HostSuspendInd
5984(
5985 WDI_SuspendParamsType* pwdiSuspendIndParams
5986)
5987{
5988
5989 WDI_EventInfoType wdiEventData;
5990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5991
5992 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005993 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005994 ------------------------------------------------------------------------*/
5995 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5996 {
5997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5998 "WDI API call before module is initialized - Fail request");
5999
Jeff Johnsone7245742012-09-05 17:12:55 -07006000 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006001 }
6002
6003 /*------------------------------------------------------------------------
6004 Fill in Event data and post to the Main FSM
6005 ------------------------------------------------------------------------*/
6006 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006007 wdiEventData.pEventData = pwdiSuspendIndParams;
6008 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6009 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 wdiEventData.pUserData = NULL;
6011
6012 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6013
6014}/*WDI_HostSuspendInd*/
6015
6016/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006017 @brief WDI_TrafficStatsInd
6018 Traffic Stats from the upper layer will be sent
6019 down to HAL
6020
6021 @param WDI_TrafficStatsIndType
6022
6023 @see
6024
6025 @return Status of the request
6026*/
6027WDI_Status
6028WDI_TrafficStatsInd
6029(
6030 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6031)
6032{
6033
6034 WDI_EventInfoType wdiEventData;
6035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6036
6037 /*------------------------------------------------------------------------
6038 Sanity Check
6039 ------------------------------------------------------------------------*/
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
6045 return WDI_STATUS_E_NOT_ALLOWED;
6046 }
6047
6048 /*------------------------------------------------------------------------
6049 Fill in Event data and post to the Main FSM
6050 ------------------------------------------------------------------------*/
6051 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6052 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6053 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6054 wdiEventData.pCBfnc = NULL;
6055 wdiEventData.pUserData = NULL;
6056
6057 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6058
6059}/*WDI_TrafficStatsInd*/
6060
Chet Lanctota96bb432013-03-18 10:26:30 -07006061#ifdef WLAN_FEATURE_11W
6062/**
6063 @brief WDI_ExcludeUnencryptedInd
6064 Register with HAL to receive/drop unencrypted frames
6065
6066 @param WDI_ExcludeUnencryptIndType
6067
6068 @see
6069
6070 @return Status of the request
6071*/
6072WDI_Status
6073WDI_ExcludeUnencryptedInd
6074(
6075 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6076)
6077{
6078
6079 WDI_EventInfoType wdiEventData;
6080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6081
6082 /*------------------------------------------------------------------------
6083 Sanity Check
6084 ------------------------------------------------------------------------*/
6085 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6086 {
6087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6088 "WDI API call before module is initialized - Fail request");
6089
6090 return WDI_STATUS_E_NOT_ALLOWED;
6091 }
6092
6093 /*------------------------------------------------------------------------
6094 Fill in Event data and post to the Main FSM
6095 ------------------------------------------------------------------------*/
6096 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6097 wdiEventData.pEventData = pWdiExcUnencParams;
6098 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6099 wdiEventData.pCBfnc = NULL;
6100 wdiEventData.pUserData = NULL;
6101
6102 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6103
6104}/*WDI_TrafficStatsInd*/
6105#endif
6106
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006107/**
Yue Ma365933a2013-08-14 15:59:08 -07006108 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6109
6110 @param addPeriodicTxPtrnParams: Add Pattern parameters
6111
6112 @see
6113
6114 @return Status of the request
6115*/
6116WDI_Status
6117WDI_AddPeriodicTxPtrnInd
6118(
6119 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6120)
6121{
6122 WDI_EventInfoType wdiEventData;
6123
6124 /*-------------------------------------------------------------------------
6125 Sanity Check
6126 ------------------------------------------------------------------------*/
6127 if (eWLAN_PAL_FALSE == gWDIInitialized)
6128 {
6129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6130 "WDI API call before module is initialized - Fail request!");
6131
6132 return WDI_STATUS_E_NOT_ALLOWED;
6133 }
6134
6135 /*-------------------------------------------------------------------------
6136 Fill in Event data and post to the Main FSM
6137 ------------------------------------------------------------------------*/
6138 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6139 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6140 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6141 wdiEventData.pCBfnc = NULL;
6142 wdiEventData.pUserData = NULL;
6143
6144 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6145}
6146
6147/**
6148 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6149
6150 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6151
6152 @see
6153
6154 @return Status of the request
6155*/
6156WDI_Status
6157WDI_DelPeriodicTxPtrnInd
6158(
6159 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6160)
6161{
6162 WDI_EventInfoType wdiEventData;
6163
6164 /*-------------------------------------------------------------------------
6165 Sanity Check
6166 ------------------------------------------------------------------------*/
6167 if (eWLAN_PAL_FALSE == gWDIInitialized)
6168 {
6169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6170 "WDI API call before module is initialized - Fail request!");
6171
6172 return WDI_STATUS_E_NOT_ALLOWED;
6173 }
6174
6175 /*-------------------------------------------------------------------------
6176 Fill in Event data and post to the Main FSM
6177 ------------------------------------------------------------------------*/
6178 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6179 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6180 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6181 wdiEventData.pCBfnc = NULL;
6182 wdiEventData.pUserData = NULL;
6183
6184 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6185}
6186
6187/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006188 @brief WDI_HALDumpCmdReq
6189 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006190
6191 @param halDumpCmdReqParams: Hal Dump Command Body
6192 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006193 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006194
Jeff Johnson295189b2012-06-20 16:38:30 -07006195 @see
6196 @return Result of the function call
6197*/
6198WDI_Status WDI_HALDumpCmdReq
6199(
6200 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6201 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6202 void *pUserData
6203)
6204{
6205 WDI_EventInfoType wdiEventData;
6206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6207
6208 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006209 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006210 ------------------------------------------------------------------------*/
6211 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6212 {
6213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6214 "WDI API call before module is initialized - Fail request");
6215
Jeff Johnsone7245742012-09-05 17:12:55 -07006216 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006217 }
6218
6219 /*------------------------------------------------------------------------
6220 Fill in Event data and post to the Main FSM
6221 ------------------------------------------------------------------------*/
6222 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6223 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6224 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6225 wdiEventData.pCBfnc = halDumpCmdRspCb;
6226 wdiEventData.pUserData = pUserData;
6227
6228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6229}
6230
Jeff Johnsone7245742012-09-05 17:12:55 -07006231/*============================================================================
6232
Jeff Johnson295189b2012-06-20 16:38:30 -07006233 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006234
Jeff Johnson295189b2012-06-20 16:38:30 -07006235 ============================================================================*/
6236
6237/**
6238 @brief Main FSM Start function for all states except BUSY
6239
Jeff Johnsone7245742012-09-05 17:12:55 -07006240
6241 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006242 wdiEV: event posted to the main DAL FSM
6243 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006244 structure
6245
Jeff Johnson295189b2012-06-20 16:38:30 -07006246 @see
6247 @return Result of the function call
6248*/
6249WDI_Status
6250WDI_PostMainEvent
6251(
Jeff Johnsone7245742012-09-05 17:12:55 -07006252 WDI_ControlBlockType* pWDICtx,
6253 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006254 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006255
Jeff Johnson295189b2012-06-20 16:38:30 -07006256)
6257{
Jeff Johnsone7245742012-09-05 17:12:55 -07006258 WDI_Status wdiStatus;
6259 WDI_MainFuncType pfnWDIMainEvHdlr;
6260 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6262
6263 /*-------------------------------------------------------------------------
6264 Sanity check
6265 -------------------------------------------------------------------------*/
6266 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6267 ( wdiEV >= WDI_MAX_EVENT ))
6268 {
6269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6270 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6271 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006272 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006273 }
6274
6275 /*Access to the global state must be locked */
6276 wpalMutexAcquire(&pWDICtx->wptMutex);
6277
6278 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006279 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006280
6281 wdiOldState = pWDICtx->uGlobalState;
6282
6283 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006284 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6285 response comes from CCPU for the request sent by host:
6286 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 -07006287 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 -07006288 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006289 CCPU:
6290 don't change the state */
6291 if ( WDI_RESPONSE_EVENT != wdiEV)
6292 {
6293 /*Transition to BUSY State - the request is now being processed by the FSM,
6294 if the request fails we shall transition back to the old state, if not
6295 the request will manage its own state transition*/
6296 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6297 }
6298 /* If the state function associated with the EV is NULL it means that this
6299 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006300 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 {
6302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006303 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006304 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006305 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006306 }
6307 else
6308 {
6309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006310 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006312 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006313 }
6314
6315 /* If a request handles itself well it will end up in a success or in a
6316 pending
6317 Success - means that the request was processed and the proper state
6318 transition already occurred or will occur when the resp is received
6319 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006320
Jeff Johnson295189b2012-06-20 16:38:30 -07006321 Pending - means the request could not be processed at this moment in time
6322 because the FSM was already busy so no state transition or dequeueing
6323 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006324
Jeff Johnson295189b2012-06-20 16:38:30 -07006325 Success for synchronous case means that the transition may occur and
6326 processing of pending requests may continue - so it should go through
6327 and restores the state and continue processing queued requests*/
6328 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6329 ( WDI_STATUS_PENDING != wdiStatus ))
6330 {
6331 if ( WDI_RESPONSE_EVENT != wdiEV)
6332 {
6333 /*The request has failed or could not be processed - transition back to
6334 the old state - check to see if anything was queued and try to execute
6335 The dequeue logic should post a message to a thread and return - no
6336 actual processing can occur */
6337 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6338 }
6339 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006340
Jeff Johnson295189b2012-06-20 16:38:30 -07006341 }
6342
6343 /* we have completed processing the event */
6344 wpalMutexRelease(&pWDICtx->wptMutex);
6345
Jeff Johnsone7245742012-09-05 17:12:55 -07006346 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006347
6348}/*WDI_PostMainEvent*/
6349
6350
6351/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006352 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006353--------------------------------------------------------------------------*/
6354/**
6355 @brief Main FSM Start function for all states except BUSY
6356
Jeff Johnsone7245742012-09-05 17:12:55 -07006357
6358 @param pWDICtx: pointer to the WLAN DAL context
6359 pEventData: pointer to the event information structure
6360
Jeff Johnson295189b2012-06-20 16:38:30 -07006361 @see
6362 @return Result of the function call
6363*/
6364WDI_Status
6365WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006366(
Jeff Johnson295189b2012-06-20 16:38:30 -07006367 WDI_ControlBlockType* pWDICtx,
6368 WDI_EventInfoType* pEventData
6369)
6370{
6371
6372 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006373 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006374 ----------------------------------------------------------------------*/
6375 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6376 {
6377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006378 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006379 pWDICtx, pEventData);
6380 return WDI_STATUS_E_FAILURE;
6381 }
6382
6383 wpalMutexAcquire(&pWDICtx->wptMutex);
6384
6385 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006386 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006387 ----------------------------------------------------------------------*/
6388 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6389 {
6390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6391 "Control Transport not yet Open - queueing the request");
6392
6393 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006394 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006395
6396 wpalMutexRelease(&pWDICtx->wptMutex);
6397 return WDI_STATUS_PENDING;
6398 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006399
Jeff Johnson295189b2012-06-20 16:38:30 -07006400 wpalMutexRelease(&pWDICtx->wptMutex);
6401
6402 /*Return Success*/
6403 return WDI_ProcessRequest( pWDICtx, pEventData );
6404
6405}/*WDI_MainStart*/
6406
6407/**
6408 @brief Main FSM Response function for state INIT
6409
Jeff Johnsone7245742012-09-05 17:12:55 -07006410
6411 @param pWDICtx: pointer to the WLAN DAL context
6412 pEventData: pointer to the event information structure
6413
Jeff Johnson295189b2012-06-20 16:38:30 -07006414 @see
6415 @return Result of the function call
6416*/
6417WDI_Status
6418WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006419(
Jeff Johnson295189b2012-06-20 16:38:30 -07006420 WDI_ControlBlockType* pWDICtx,
6421 WDI_EventInfoType* pEventData
6422)
6423{
6424 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006425 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006426 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006427 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006428
6429 /*Return Success*/
6430 return WDI_STATUS_E_NOT_ALLOWED;
6431}/* WDI_MainRspInit */
6432
6433/**
6434 @brief Main FSM Close function for all states except BUSY
6435
Jeff Johnsone7245742012-09-05 17:12:55 -07006436
6437 @param pWDICtx: pointer to the WLAN DAL context
6438 pEventData: pointer to the event information structure
6439
Jeff Johnson295189b2012-06-20 16:38:30 -07006440 @see
6441 @return Result of the function call
6442*/
6443WDI_Status
6444WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006445(
Jeff Johnson295189b2012-06-20 16:38:30 -07006446 WDI_ControlBlockType* pWDICtx,
6447 WDI_EventInfoType* pEventData
6448)
6449{
6450
6451 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006452 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006453 ----------------------------------------------------------------------*/
6454 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6455 {
6456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006457 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006458 pWDICtx, pEventData);
6459 return WDI_STATUS_E_FAILURE;
6460 }
6461
6462 /*Return Success*/
6463 return WDI_ProcessRequest( pWDICtx, pEventData );
6464
6465}/*WDI_MainClose*/
6466/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006467 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006468--------------------------------------------------------------------------*/
6469/**
6470 @brief Main FSM Start function for state STARTED
6471
Jeff Johnsone7245742012-09-05 17:12:55 -07006472
6473 @param pWDICtx: pointer to the WLAN DAL context
6474 pEventData: pointer to the event information structure
6475
Jeff Johnson295189b2012-06-20 16:38:30 -07006476 @see
6477 @return Result of the function call
6478*/
6479WDI_Status
6480WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006481(
Jeff Johnson295189b2012-06-20 16:38:30 -07006482 WDI_ControlBlockType* pWDICtx,
6483 WDI_EventInfoType* pEventData
6484)
6485{
6486 WDI_StartRspCb wdiStartRspCb = NULL;
6487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6488
6489 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006490 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006491 ----------------------------------------------------------------------*/
6492 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6493 {
6494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006495 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006496 pWDICtx, pEventData);
6497 return WDI_STATUS_E_FAILURE;
6498 }
6499
6500 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006501 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006502 ----------------------------------------------------------------------*/
6503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006504 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006505
6506 wpalMutexAcquire(&pWDICtx->wptMutex);
6507
6508 /*Transition back to started because the post function transitioned us to
6509 busy*/
6510 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6511
6512 /*Check to see if any request is pending*/
6513 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006514
Jeff Johnson295189b2012-06-20 16:38:30 -07006515 wpalMutexRelease(&pWDICtx->wptMutex);
6516
6517 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006518 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6519
Jeff Johnson295189b2012-06-20 16:38:30 -07006520 /*Notify UMAC*/
6521 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6522
6523 /*Return Success*/
6524 return WDI_STATUS_SUCCESS;
6525
6526}/*WDI_MainStartStarted*/
6527
6528/**
6529 @brief Main FSM Stop function for state STARTED
6530
Jeff Johnsone7245742012-09-05 17:12:55 -07006531
6532 @param pWDICtx: pointer to the WLAN DAL context
6533 pEventData: pointer to the event information structure
6534
Jeff Johnson295189b2012-06-20 16:38:30 -07006535 @see
6536 @return Result of the function call
6537*/
6538WDI_Status
6539WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006540(
Jeff Johnson295189b2012-06-20 16:38:30 -07006541 WDI_ControlBlockType* pWDICtx,
6542 WDI_EventInfoType* pEventData
6543)
6544{
6545 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006546 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006547 ----------------------------------------------------------------------*/
6548 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6549 {
6550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006551 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006552 pWDICtx, pEventData);
6553 return WDI_STATUS_E_FAILURE;
6554 }
6555
6556 /*State at this point is BUSY - because we enter this state before posting
6557 an event to the FSM in order to prevent potential race conditions*/
6558
6559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6560 "Processing stop request in FSM");
6561
6562 /*Return Success*/
6563 return WDI_ProcessRequest( pWDICtx, pEventData );
6564
6565}/*WDI_MainStopStarted*/
6566/**
6567 @brief Main FSM Request function for state started
6568
Jeff Johnsone7245742012-09-05 17:12:55 -07006569
6570 @param pWDICtx: pointer to the WLAN DAL context
6571 pEventData: pointer to the event information structure
6572
Jeff Johnson295189b2012-06-20 16:38:30 -07006573 @see
6574 @return Result of the function call
6575*/
6576WDI_Status
6577WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006578(
Jeff Johnson295189b2012-06-20 16:38:30 -07006579 WDI_ControlBlockType* pWDICtx,
6580 WDI_EventInfoType* pEventData
6581)
6582{
6583
6584 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006585 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 ----------------------------------------------------------------------*/
6587 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6588 {
6589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006590 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006591 pWDICtx, pEventData);
6592 return WDI_STATUS_E_FAILURE;
6593 }
6594
6595 /*State at this point is BUSY - because we enter this state before posting
6596 an event to the FSM in order to prevent potential race conditions*/
6597
6598 /*Return Success*/
6599 return WDI_ProcessRequest( pWDICtx, pEventData );
6600
6601}/*WDI_MainReqStarted*/
6602
6603/**
6604 @brief Main FSM Response function for all states except INIT
6605
Jeff Johnsone7245742012-09-05 17:12:55 -07006606
6607 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006608 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006609
Jeff Johnson295189b2012-06-20 16:38:30 -07006610 @see
6611 @return Result of the function call
6612*/
6613WDI_Status
6614WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006615(
Jeff Johnson295189b2012-06-20 16:38:30 -07006616 WDI_ControlBlockType* pWDICtx,
6617 WDI_EventInfoType* pEventData
6618)
6619{
Jeff Johnsone7245742012-09-05 17:12:55 -07006620 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006621 wpt_boolean expectedResponse;
6622
6623 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006624 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006625 ----------------------------------------------------------------------*/
6626 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6627 {
6628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006629 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006630 pWDICtx, pEventData);
6631 return WDI_STATUS_E_FAILURE;
6632 }
6633
6634 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6635 {
6636 /* we received an expected response */
6637 expectedResponse = eWLAN_PAL_TRUE;
6638
6639 /*We expect that we will transition to started after this processing*/
6640 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6641
6642 /* we are no longer expecting a response */
6643 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6644 }
6645 else
6646 {
6647 /* we received an indication or unexpected response */
6648 expectedResponse = eWLAN_PAL_FALSE;
6649 /* for indications no need to update state from what it is right
6650 now, unless it explicitly does it in the indication handler (say
6651 for device failure ind) */
6652 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6653 }
6654
6655 /*Process the response and indication */
6656 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6657
6658 /*Lock the CB as we are about to do a state transition*/
6659 wpalMutexAcquire(&pWDICtx->wptMutex);
6660
6661 /*Transition to the expected state after the response processing
6662 - this should always be started state with the following exceptions:
6663 1. processing of a failed start response
6664 2. device failure detected while processing response
6665 3. stop response received*/
6666 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006667
Jeff Johnson295189b2012-06-20 16:38:30 -07006668 /*Dequeue request that may have been queued while we were waiting for the
6669 response */
6670 if ( expectedResponse )
6671 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006672 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006673 }
6674
6675 wpalMutexRelease(&pWDICtx->wptMutex);
6676
6677 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006678 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006679
6680}/*WDI_MainRsp*/
6681
6682/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006683 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006684--------------------------------------------------------------------------*/
6685/**
6686 @brief Main FSM Stop function for state STOPPED
6687
Jeff Johnsone7245742012-09-05 17:12:55 -07006688
6689 @param pWDICtx: pointer to the WLAN DAL context
6690 pEventData: pointer to the event information structure
6691
Jeff Johnson295189b2012-06-20 16:38:30 -07006692 @see
6693 @return Result of the function call
6694*/
6695WDI_Status
6696WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006697(
Jeff Johnson295189b2012-06-20 16:38:30 -07006698 WDI_ControlBlockType* pWDICtx,
6699 WDI_EventInfoType* pEventData
6700)
6701{
6702 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006703 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006704 ----------------------------------------------------------------------*/
6705 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6706 {
6707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006708 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006709 pWDICtx, pEventData);
6710 return WDI_STATUS_E_FAILURE;
6711 }
6712
6713 /*We should normally not get a STOP request if we are already stopped
6714 since we should normally be stopped by the UMAC. However in some
6715 error situations we put ourselves in the stopped state without the
6716 UMAC knowing, so when we get a STOP request in this state we still
6717 process it since we need to clean up the underlying state */
6718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6719 "Processing stop request while stopped in FSM");
6720
6721 /*Return Success*/
6722 return WDI_ProcessRequest( pWDICtx, pEventData );
6723
6724}/*WDI_MainStopStopped*/
6725
6726/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006727 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006728--------------------------------------------------------------------------*/
6729/**
6730 @brief Main FSM Start function for state BUSY
6731
Jeff Johnsone7245742012-09-05 17:12:55 -07006732
6733 @param pWDICtx: pointer to the WLAN DAL context
6734 pEventData: pointer to the event information structure
6735
Jeff Johnson295189b2012-06-20 16:38:30 -07006736 @see
6737 @return Result of the function call
6738*/
6739WDI_Status
6740WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006741(
Jeff Johnson295189b2012-06-20 16:38:30 -07006742 WDI_ControlBlockType* pWDICtx,
6743 WDI_EventInfoType* pEventData
6744)
6745{
6746 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006747 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006748 ----------------------------------------------------------------------*/
6749 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6750 {
6751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006752 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006753 pWDICtx, pEventData);
6754 return WDI_STATUS_E_FAILURE;
6755 }
6756
6757 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006758 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006759 ----------------------------------------------------------------------*/
6760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6761 "WDI Busy state - queue start request");
6762
6763 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006764 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006765
6766 /*Return Success*/
6767 return WDI_STATUS_PENDING;
6768}/*WDI_MainStartBusy*/
6769
6770/**
6771 @brief Main FSM Stop function for state BUSY
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_MainStopBusy
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 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006789 ----------------------------------------------------------------------*/
6790 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6791 {
6792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006793 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006794 pWDICtx, pEventData);
6795 return WDI_STATUS_E_FAILURE;
6796 }
6797
6798 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006799 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006800 ----------------------------------------------------------------------*/
6801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6802 "WDI Busy state - queue stop request");
6803
Jeff Johnsone7245742012-09-05 17:12:55 -07006804 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006805 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006806
Jeff Johnson295189b2012-06-20 16:38:30 -07006807}/*WDI_MainStopBusy*/
6808
6809/**
6810 @brief Main FSM Request function for state BUSY
6811
Jeff Johnsone7245742012-09-05 17:12:55 -07006812
6813 @param pWDICtx: pointer to the WLAN DAL context
6814 pEventData: pointer to the event information structure
6815
Jeff Johnson295189b2012-06-20 16:38:30 -07006816 @see
6817 @return Result of the function call
6818*/
6819WDI_Status
6820WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006821(
Jeff Johnson295189b2012-06-20 16:38:30 -07006822 WDI_ControlBlockType* pWDICtx,
6823 WDI_EventInfoType* pEventData
6824)
6825{
6826 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006827 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006828 ----------------------------------------------------------------------*/
6829 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6830 {
6831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006832 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006833 pWDICtx, pEventData);
6834 return WDI_STATUS_E_FAILURE;
6835 }
6836
6837 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006838 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006839 ----------------------------------------------------------------------*/
6840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6841 "WDI Busy state - queue request %d because waiting for response %d",
6842 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6843
Jeff Johnsone7245742012-09-05 17:12:55 -07006844 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006845 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006846
Jeff Johnson295189b2012-06-20 16:38:30 -07006847}/*WDI_MainReqBusy*/
6848/**
6849 @brief Main FSM Close function for state BUSY
6850
Jeff Johnsone7245742012-09-05 17:12:55 -07006851
6852 @param pWDICtx: pointer to the WLAN DAL context
6853 pEventData: pointer to the event information structure
6854
Jeff Johnson295189b2012-06-20 16:38:30 -07006855 @see
6856 @return Result of the function call
6857*/
6858WDI_Status
6859WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006860(
Jeff Johnson295189b2012-06-20 16:38:30 -07006861 WDI_ControlBlockType* pWDICtx,
6862 WDI_EventInfoType* pEventData
6863)
6864{
6865 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006866 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006867 ----------------------------------------------------------------------*/
6868 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6869 {
6870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006871 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 pWDICtx, pEventData);
6873 return WDI_STATUS_E_FAILURE;
6874 }
6875
6876 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006877 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006878 ----------------------------------------------------------------------*/
6879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6880 "WDI Busy state - queue close request");
6881
Jeff Johnsone7245742012-09-05 17:12:55 -07006882 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006883 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006884
Jeff Johnson295189b2012-06-20 16:38:30 -07006885}/*WDI_MainCloseBusy*/
6886
6887/**
6888 @brief Main FSM Shutdown function for INIT & STARTED states
6889
6890
6891 @param pWDICtx: pointer to the WLAN DAL context
6892 pEventData: pointer to the event information structure
6893
6894 @see
6895 @return Result of the function call
6896*/
6897WDI_Status
6898WDI_MainShutdown
6899(
6900 WDI_ControlBlockType* pWDICtx,
6901 WDI_EventInfoType* pEventData
6902)
6903{
6904 /*--------------------------------------------------------------------
6905 Sanity Check
6906 ----------------------------------------------------------------------*/
6907 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6908 {
6909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006910 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006911 pWDICtx, pEventData);
6912 return WDI_STATUS_E_FAILURE;
6913 }
6914
6915 /*State at this point is BUSY - because we enter this state before posting
6916 an event to the FSM in order to prevent potential race conditions*/
6917
6918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6919 "Processing shutdown request in FSM");
6920
6921 /*Return Success*/
6922 return WDI_ProcessRequest( pWDICtx, pEventData );
6923
6924}/*WDI_MainShutdown*/
6925
6926/**
6927 @brief Main FSM Shutdown function for BUSY state
6928
6929
6930 @param pWDICtx: pointer to the WLAN DAL context
6931 pEventData: pointer to the event information structure
6932
6933 @see
6934 @return Result of the function call
6935*/
6936WDI_Status
6937WDI_MainShutdownBusy
6938(
6939 WDI_ControlBlockType* pWDICtx,
6940 WDI_EventInfoType* pEventData
6941)
6942{
6943 /*--------------------------------------------------------------------
6944 Sanity Check
6945 ----------------------------------------------------------------------*/
6946 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6947 {
6948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006949 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006950 pWDICtx, pEventData);
6951 return WDI_STATUS_E_FAILURE;
6952 }
6953
6954 /* If you are waiting for a HAL response at this stage, you are not
6955 * going to get it. Riva is already shutdown/crashed.
6956 */
6957 wpalTimerStop(&gWDICb.wptResponseTimer);
6958
6959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6960 "Processing shutdown request in FSM: Busy state ");
6961
6962 return WDI_ProcessRequest( pWDICtx, pEventData );
6963
6964}/*WDI_MainShutdownBusy*/
6965
6966
Jeff Johnsone7245742012-09-05 17:12:55 -07006967/*=======================================================================
6968
Jeff Johnson295189b2012-06-20 16:38:30 -07006969 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006970
Jeff Johnson295189b2012-06-20 16:38:30 -07006971*=======================================================================*/
6972
6973/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006974 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006975========================================================================*/
6976/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006977 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006979
6980 @param pWDICtx: pointer to the WLAN DAL context
6981 pEventData: pointer to the event information structure
6982
Jeff Johnson295189b2012-06-20 16:38:30 -07006983 @see
6984 @return Result of the function call
6985*/
6986WDI_Status
6987WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006988(
Jeff Johnson295189b2012-06-20 16:38:30 -07006989 WDI_ControlBlockType* pWDICtx,
6990 WDI_EventInfoType* pEventData
6991)
6992{
6993 WDI_StartReqParamsType* pwdiStartParams = NULL;
6994 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006995 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006996 wpt_uint16 usDataOffset = 0;
6997 wpt_uint16 usSendSize = 0;
6998
Jeff Johnsone7245742012-09-05 17:12:55 -07006999 tHalMacStartReqMsg halStartReq;
7000 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7002
7003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007004 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 -------------------------------------------------------------------------*/
7006 if (( NULL == pEventData ) ||
7007 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7008 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7009 {
7010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007014 }
7015
7016 /*-----------------------------------------------------------------------
7017 Get message buffer
7018 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007019 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007020 pwdiStartParams->usConfigBufferLen;
7021
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 usLen,
7024 &pSendBuffer, &usDataOffset, &usSendSize))||
7025 ( usSendSize < (usDataOffset + usLen )))
7026 {
7027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007028 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007029 pEventData, pwdiStartParams, wdiStartRspCb);
7030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007032 }
7033
7034 /*-----------------------------------------------------------------------
7035 Fill in the message
7036 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007037 halStartReq.startReqParams.driverType =
7038 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007039
Jeff Johnsone7245742012-09-05 17:12:55 -07007040 halStartReq.startReqParams.uConfigBufferLen =
7041 pwdiStartParams->usConfigBufferLen;
7042 wpalMemoryCopy( pSendBuffer+usDataOffset,
7043 &halStartReq.startReqParams,
7044 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007045
Jeff Johnsone7245742012-09-05 17:12:55 -07007046 usDataOffset += sizeof(halStartReq.startReqParams);
7047 wpalMemoryCopy( pSendBuffer+usDataOffset,
7048 pwdiStartParams->pConfigBuffer,
7049 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007050
7051 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007053
7054 /*Save Low Level Ind CB and associated user data - it will be used further
7055 on when an indication is coming from the lower MAC*/
7056 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007057 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007058
Jeff Johnsone7245742012-09-05 17:12:55 -07007059 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007061 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007062 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007063 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007064 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7065
Jeff Johnsone7245742012-09-05 17:12:55 -07007066
Jeff Johnson295189b2012-06-20 16:38:30 -07007067}/*WDI_ProcessStartReq*/
7068
7069/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007070 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007071 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007072
7073 @param pWDICtx: pointer to the WLAN DAL context
7074 pEventData: pointer to the event information structure
7075
Jeff Johnson295189b2012-06-20 16:38:30 -07007076 @see
7077 @return Result of the function call
7078*/
7079WDI_Status
7080WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007081(
Jeff Johnson295189b2012-06-20 16:38:30 -07007082 WDI_ControlBlockType* pWDICtx,
7083 WDI_EventInfoType* pEventData
7084)
7085{
7086 WDI_StopReqParamsType* pwdiStopParams = NULL;
7087 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007088 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007089 wpt_uint16 usDataOffset = 0;
7090 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007091 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007092 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7094
7095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007096 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 -------------------------------------------------------------------------*/
7098 if (( NULL == pEventData ) ||
7099 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7100 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7101 {
7102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007103 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007104 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007105 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007106 }
7107
7108 /*-----------------------------------------------------------------------
7109 Get message buffer
7110 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007111 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007112 sizeof(halStopReq.stopReqParams),
7113 &pSendBuffer, &usDataOffset, &usSendSize))||
7114 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7115 {
7116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007117 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007118 pEventData, pwdiStopParams, wdiStopRspCb);
7119 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007120 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007121 }
7122
7123 /*-----------------------------------------------------------------------
7124 Fill in the message
7125 -----------------------------------------------------------------------*/
7126 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7127 pwdiStopParams->wdiStopReason);
7128
Jeff Johnsone7245742012-09-05 17:12:55 -07007129 wpalMemoryCopy( pSendBuffer+usDataOffset,
7130 &halStopReq.stopReqParams,
7131 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007132
7133 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007134 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007135
7136 /*! TO DO: stop the data services */
7137 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7138 {
7139 /*Stop the STA Table !UT- check this logic again
7140 It is safer to do it here than on the response - because a stop is imminent*/
7141 WDI_STATableStop(pWDICtx);
7142
7143 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007144 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7145 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007146 {
7147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7148 "WDI Init failed to reset power state event");
7149
Jeff Johnsone7245742012-09-05 17:12:55 -07007150 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007151 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007152 }
7153 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007154 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7155 if( eWLAN_PAL_STATUS_SUCCESS != status )
7156 {
7157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -08007158 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state", status);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007159 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007160 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007161 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007162 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007163 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007165 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7166 WDI_SET_POWER_STATE_TIMEOUT);
7167 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 {
7169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7170 "WDI Init failed to wait on an event");
7171
Jeff Johnsone7245742012-09-05 17:12:55 -07007172 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007173 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 }
7175 }
7176
7177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007178 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007179 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7182
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007183fail:
7184 // Release the message buffer so we don't leak
7185 wpalMemoryFree(pSendBuffer);
7186
7187failRequest:
7188 //WDA should have failure check to avoid the memory leak
7189 return WDI_STATUS_E_FAILURE;
7190
Jeff Johnson295189b2012-06-20 16:38:30 -07007191}/*WDI_ProcessStopReq*/
7192
7193/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007194 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007195 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007196
7197 @param pWDICtx: pointer to the WLAN DAL context
7198 pEventData: pointer to the event information structure
7199
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 @see
7201 @return Result of the function call
7202*/
7203WDI_Status
7204WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007205(
Jeff Johnson295189b2012-06-20 16:38:30 -07007206 WDI_ControlBlockType* pWDICtx,
7207 WDI_EventInfoType* pEventData
7208)
7209{
Jeff Johnsone7245742012-09-05 17:12:55 -07007210 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7212
7213 /*Lock control block for cleanup*/
7214 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007215
Jeff Johnson295189b2012-06-20 16:38:30 -07007216 /*Clear all pending request*/
7217 WDI_ClearPendingRequests(pWDICtx);
7218
7219 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007221
7222 /* Close Data transport*/
7223 /* FTM mode does not open Data Path */
7224 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7225 {
7226 WDTS_Close(pWDICtx);
7227 }
7228
7229 /*Close the STA Table !UT- check this logic again*/
7230 WDI_STATableClose(pWDICtx);
7231
7232 /*close the PAL */
7233 wptStatus = wpalClose(pWDICtx->pPALContext);
7234 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7235 {
7236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7237 "Failed to wpal Close %d", wptStatus);
7238 WDI_ASSERT(0);
7239 }
7240
7241 /*Transition back to init state*/
7242 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7243
7244 wpalMutexRelease(&pWDICtx->wptMutex);
7245
7246 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007247 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007248
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007250}/*WDI_ProcessCloseReq*/
7251
7252
7253/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007255===========================================================================*/
7256
7257/**
7258 @brief Process Init Scan Request function (called when Main FSM
7259 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007260
7261 @param pWDICtx: pointer to the WLAN DAL context
7262 pEventData: pointer to the event information structure
7263
Jeff Johnson295189b2012-06-20 16:38:30 -07007264 @see
7265 @return Result of the function call
7266*/
7267WDI_Status
7268WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007269(
Jeff Johnson295189b2012-06-20 16:38:30 -07007270 WDI_ControlBlockType* pWDICtx,
7271 WDI_EventInfoType* pEventData
7272)
7273{
7274 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7275 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007276 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 wpt_uint16 usDataOffset = 0;
7278 wpt_uint16 usSendSize = 0;
7279 wpt_uint8 i = 0;
7280
7281 tHalInitScanReqMsg halInitScanReqMsg;
7282
Jeff Johnsone7245742012-09-05 17:12:55 -07007283 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007284 * It shold be removed once host and riva changes are in sync*/
7285 tHalInitScanConReqMsg halInitScanConReqMsg;
7286
7287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7288
7289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007291 -------------------------------------------------------------------------*/
7292 if (( NULL == pEventData ) ||
7293 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7294 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7295 {
7296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007300 }
7301
7302#if 0
7303 wpalMutexAcquire(&pWDICtx->wptMutex);
7304 /*-----------------------------------------------------------------------
7305 Check to see if SCAN is already in progress - if so reject the req
7306 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007307 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 -----------------------------------------------------------------------*/
7309 if ( pWDICtx->bScanInProgress )
7310 {
7311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7312 "Scan is already in progress - subsequent scan is not allowed"
7313 " until the first scan completes");
7314
7315 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 }
7318
Jeff Johnsone7245742012-09-05 17:12:55 -07007319 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7320 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007321
7322 wpalMutexRelease(&pWDICtx->wptMutex);
7323#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007324 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007325 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007326 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007327 * It shold be removed once host and riva changes are in sync*/
7328 /*-----------------------------------------------------------------------
7329 Get message buffer
7330 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 sizeof(halInitScanConReqMsg.initScanParams),
7333 &pSendBuffer, &usDataOffset, &usSendSize))||
7334 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7335 {
7336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007337 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007338 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7339 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007340 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007341 }
7342
7343
7344 /*-----------------------------------------------------------------------
7345 Fill in the message
7346 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7349
7350 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7351 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7352
Jeff Johnsone7245742012-09-05 17:12:55 -07007353 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007354 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007355 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007356 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007357 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007358 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7359
7360 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7361 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7362
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7364 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007365
Jeff Johnsone7245742012-09-05 17:12:55 -07007366 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007367 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7368
7369 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7370 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007371 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7373 }
7374
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 wpalMemoryCopy( pSendBuffer+usDataOffset,
7376 &halInitScanConReqMsg.initScanParams,
7377 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 }
7379 else
7380 {
7381 /*-----------------------------------------------------------------------
7382 Get message buffer
7383 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007385 sizeof(halInitScanReqMsg.initScanParams),
7386 &pSendBuffer, &usDataOffset, &usSendSize))||
7387 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7388 {
7389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007390 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007391 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 }
7395
7396
7397 /*-----------------------------------------------------------------------
7398 Fill in the message
7399 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007400 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7402
7403 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7404 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7405
Jeff Johnsone7245742012-09-05 17:12:55 -07007406 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007407 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007408 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007410 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007411 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7412
7413 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7414 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7415
Jeff Johnsone7245742012-09-05 17:12:55 -07007416 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007417 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7418
7419 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7420 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007421 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007422 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7423 }
7424
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 wpalMemoryCopy( pSendBuffer+usDataOffset,
7426 &halInitScanReqMsg.initScanParams,
7427 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 }
7429
7430 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007431 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007432
7433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007434 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007435 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7438
7439}/*WDI_ProcessInitScanReq*/
7440
7441/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007442 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007443 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007444
7445 @param pWDICtx: pointer to the WLAN DAL context
7446 pEventData: pointer to the event information structure
7447
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 @see
7449 @return Result of the function call
7450*/
7451WDI_Status
7452WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007453(
Jeff Johnson295189b2012-06-20 16:38:30 -07007454 WDI_ControlBlockType* pWDICtx,
7455 WDI_EventInfoType* pEventData
7456)
7457{
7458 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7459 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 wpt_uint16 usDataOffset = 0;
7462 wpt_uint16 usSendSize = 0;
7463
Jeff Johnsone7245742012-09-05 17:12:55 -07007464 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7466
7467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007469 -------------------------------------------------------------------------*/
7470 if (( NULL == pEventData ) ||
7471 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7472 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7473 {
7474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 }
7479
7480#if 0
7481 wpalMutexAcquire(&pWDICtx->wptMutex);
7482 /*-----------------------------------------------------------------------
7483 Check to see if SCAN is already in progress - start scan is only
7484 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007485 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007486 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007487 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007488 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7489 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7490 {
7491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7492 "Scan start not allowed in this state %d %d",
7493 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007494
Jeff Johnson295189b2012-06-20 16:38:30 -07007495 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007496 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 }
7498
Jeff Johnsone7245742012-09-05 17:12:55 -07007499 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007500
7501 wpalMutexRelease(&pWDICtx->wptMutex);
7502#endif
7503
7504 /*-----------------------------------------------------------------------
7505 Get message buffer
7506 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007507 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 sizeof(halStartScanReqMsg.startScanParams),
7509 &pSendBuffer, &usDataOffset, &usSendSize))||
7510 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7511 {
7512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007513 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 }
7518
Jeff Johnsone7245742012-09-05 17:12:55 -07007519 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007520 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007521 wpalMemoryCopy( pSendBuffer+usDataOffset,
7522 &halStartScanReqMsg.startScanParams,
7523 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007524
7525 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007526 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007527
7528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007529 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007530 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007531 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007532 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7533}/*WDI_ProcessStartScanReq*/
7534
7535
7536/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007537 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007538 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007539
7540 @param pWDICtx: pointer to the WLAN DAL context
7541 pEventData: pointer to the event information structure
7542
Jeff Johnson295189b2012-06-20 16:38:30 -07007543 @see
7544 @return Result of the function call
7545*/
7546WDI_Status
7547WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007548(
Jeff Johnson295189b2012-06-20 16:38:30 -07007549 WDI_ControlBlockType* pWDICtx,
7550 WDI_EventInfoType* pEventData
7551)
7552{
7553 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7554 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007555 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007556 wpt_uint16 usDataOffset = 0;
7557 wpt_uint16 usSendSize = 0;
7558
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7561
7562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007564 -------------------------------------------------------------------------*/
7565 if (( NULL == pEventData ) ||
7566 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7567 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7568 {
7569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007573 }
7574
Jeff Johnsone7245742012-09-05 17:12:55 -07007575 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7576 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007577 * forwarded to HAL and result in hang*/
7578#if 0
7579 wpalMutexAcquire(&pWDICtx->wptMutex);
7580 /*-----------------------------------------------------------------------
7581 Check to see if SCAN is already in progress - end scan is only
7582 allowed when a scan is ongoing and the state of the scan procedure
7583 is started
7584 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7587 {
7588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7589 "End start not allowed in this state %d %d",
7590 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007591
Jeff Johnson295189b2012-06-20 16:38:30 -07007592 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 }
7595
Jeff Johnsone7245742012-09-05 17:12:55 -07007596 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007597
7598 wpalMutexRelease(&pWDICtx->wptMutex);
7599#endif
7600
7601 /*-----------------------------------------------------------------------
7602 Get message buffer
7603 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007604 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007605 sizeof(halEndScanReqMsg.endScanParams),
7606 &pSendBuffer, &usDataOffset, &usSendSize))||
7607 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7608 {
7609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007610 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007611 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007614 }
7615
7616 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7617
Jeff Johnsone7245742012-09-05 17:12:55 -07007618 wpalMemoryCopy( pSendBuffer+usDataOffset,
7619 &halEndScanReqMsg.endScanParams,
7620 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007621
7622 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007623 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007624
7625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007626 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007628 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7630}/*WDI_ProcessEndScanReq*/
7631
7632
7633/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007634 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007635 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007636
7637 @param pWDICtx: pointer to the WLAN DAL context
7638 pEventData: pointer to the event information structure
7639
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 @see
7641 @return Result of the function call
7642*/
7643WDI_Status
7644WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007645(
Jeff Johnson295189b2012-06-20 16:38:30 -07007646 WDI_ControlBlockType* pWDICtx,
7647 WDI_EventInfoType* pEventData
7648)
7649{
7650 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7651 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 wpt_uint16 usDataOffset = 0;
7654 wpt_uint16 usSendSize = 0;
7655 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007656 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007657 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7659
7660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007662 -------------------------------------------------------------------------*/
7663 if (( NULL == pEventData ) ||
7664 ( NULL == pEventData->pEventData) ||
7665 ( NULL == pEventData->pCBfnc))
7666 {
7667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 }
7672
7673 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7674 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007675 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7676 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007677 * forwarded to HAL and result in hang*/
7678#if 0
7679 wpalMutexAcquire(&pWDICtx->wptMutex);
7680 /*-----------------------------------------------------------------------
7681 Check to see if SCAN is already in progress
7682 Finish scan gets invoked any scan states. ie. abort scan
7683 It should be allowed in any states.
7684 -----------------------------------------------------------------------*/
7685 if ( !pWDICtx->bScanInProgress )
7686 {
7687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7688 "Finish start not allowed in this state %d",
7689 pWDICtx->bScanInProgress );
7690
7691 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007692 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007693 }
7694
7695 /*-----------------------------------------------------------------------
7696 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007697 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007698 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007699 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7700 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007701 wpalMutexRelease(&pWDICtx->wptMutex);
7702#endif
7703
7704 if ( pWDICtx->bInBmps )
7705 {
7706 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007707 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7708 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7709 {
7710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -08007711 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007712 WDI_ASSERT(0);
7713 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007714 }
7715
7716 /*-----------------------------------------------------------------------
7717 Get message buffer
7718 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007719 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007720 sizeof(halFinishScanReqMsg.finishScanParams),
7721 &pSendBuffer, &usDataOffset, &usSendSize))||
7722 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7723 {
7724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007725 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 }
7730
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7733
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7736
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7739
7740 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7741 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7742
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007745 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007747 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007748 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7749
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7752
7753 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7754 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007755 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007756 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7757 }
7758
7759 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7760 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7761
Jeff Johnsone7245742012-09-05 17:12:55 -07007762 wpalMemoryCopy( pSendBuffer+usDataOffset,
7763 &halFinishScanReqMsg.finishScanParams,
7764 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007765
7766 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007767 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007768
7769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007770 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007771 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007772 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7774}/*WDI_ProcessFinishScanReq*/
7775
7776
7777/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007778 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007779==========================================================================*/
7780/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007781 @brief Process BSS Join for a given Session
7782
7783 @param pWDICtx: pointer to the WLAN DAL context
7784 pEventData: pointer to the event information structure
7785
Jeff Johnson295189b2012-06-20 16:38:30 -07007786 @see
7787 @return Result of the function call
7788*/
7789WDI_Status
7790WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007791(
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 WDI_ControlBlockType* pWDICtx,
7793 WDI_JoinReqParamsType* pwdiJoinParams,
7794 WDI_JoinRspCb wdiJoinRspCb,
7795 void* pUserData
7796)
7797{
7798 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007799 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007800 wpt_uint16 usDataOffset = 0;
7801 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007803
Jeff Johnsone7245742012-09-05 17:12:55 -07007804 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7806
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007807 wpalMutexAcquire(&pWDICtx->wptMutex);
7808
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 /*------------------------------------------------------------------------
7810 Check to see if we have any session with this BSSID already stored, we
7811 should not
7812 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007813 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7814 pwdiJoinParams->wdiReqInfo.macBSSID,
7815 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007816
7817 if ( NULL != pBSSSes )
7818 {
7819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007820 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7821 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007822
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007823 /*reset the bAssociationInProgress otherwise the next
7824 *join request will be queued*/
7825 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7826 wpalMutexRelease(&pWDICtx->wptMutex);
7827 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007828 }
7829
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007832 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 if ( NULL == pBSSSes )
7835 {
7836
7837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7838 "DAL has no free sessions - cannot run another join");
7839
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007840 /*reset the bAssociationInProgress otherwise the next
7841 *join request will be queued*/
7842 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007844 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 }
7846
7847 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7849 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 WDI_MAC_ADDR_LEN);
7851
7852 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007855
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 wpalMutexRelease(&pWDICtx->wptMutex);
7857
7858 /*-----------------------------------------------------------------------
7859 Get message buffer
7860 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007861 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007862 sizeof(halJoinReqMsg.joinReqParams),
7863 &pSendBuffer, &usDataOffset, &usSendSize))||
7864 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7865 {
7866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007867 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 pUserData, pwdiJoinParams, wdiJoinRspCb);
7869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 }
7872
7873 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007874 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007875
7876 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007877 pwdiJoinParams->wdiReqInfo.macSTASelf,
7878 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007879
Jeff Johnsone7245742012-09-05 17:12:55 -07007880 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007881 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7882
7883 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7884
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007885#ifdef WLAN_FEATURE_VOWIFI
7886 halJoinReqMsg.joinReqParams.maxTxPower =
7887 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7888#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007889 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007890 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7891#endif
7892
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007894 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7895 wdiSecondaryChannelOffset);
7896
Jeff Johnsone7245742012-09-05 17:12:55 -07007897 wpalMemoryCopy( pSendBuffer+usDataOffset,
7898 &halJoinReqMsg.joinReqParams,
7899 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007900
7901 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007902 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007903
7904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7908 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007909
7910}/*WDI_ProcessBSSSessionJoinReq*/
7911
7912/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007913 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007915
7916 @param pWDICtx: pointer to the WLAN DAL context
7917 pEventData: pointer to the event information structure
7918
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 @see
7920 @return Result of the function call
7921*/
7922WDI_Status
7923WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007924(
Jeff Johnson295189b2012-06-20 16:38:30 -07007925 WDI_ControlBlockType* pWDICtx,
7926 WDI_EventInfoType* pEventData
7927)
7928{
7929 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7930 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7931 WDI_JoinRspCb wdiJoinRspCb = NULL;
7932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7933
7934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 -------------------------------------------------------------------------*/
7937 if (( NULL == pEventData ) ||
7938 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7939 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7940 {
7941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007942 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007945 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007946
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 /*-------------------------------------------------------------------------
7948 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007949 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 -------------------------------------------------------------------------*/
7951 wpalMutexAcquire(&pWDICtx->wptMutex);
7952
7953 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7954 {
7955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7956 "Association is currently in progress, queueing new join req");
7957
7958 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007959 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007960 pwdiJoinParams->wdiReqInfo.macBSSID);
7961
7962 wpalMutexRelease(&pWDICtx->wptMutex);
7963
Jeff Johnsone7245742012-09-05 17:12:55 -07007964 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007965 }
7966
7967 /*Starting a new association */
7968 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7969 wpalMutexRelease(&pWDICtx->wptMutex);
7970
7971 /*Process the Join Request*/
7972 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7973 wdiJoinRspCb,pEventData->pUserData);
7974
7975}/*WDI_ProcessJoinReq*/
7976
7977
7978/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007981
7982 @param pWDICtx: pointer to the WLAN DAL context
7983 pEventData: pointer to the event information structure
7984
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 @see
7986 @return Result of the function call
7987*/
7988WDI_Status
7989WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007990(
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 WDI_ControlBlockType* pWDICtx,
7992 WDI_EventInfoType* pEventData
7993)
7994{
7995 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7996 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007999 wpt_uint16 uMsgSize = 0;
8000 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 wpt_uint16 usDataOffset = 0;
8002 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008003 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008004
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8007
8008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008010 -------------------------------------------------------------------------*/
8011 if (( NULL == pEventData ) ||
8012 ( NULL == pEventData->pEventData ) ||
8013 ( NULL == pEventData->pCBfnc ))
8014 {
8015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 }
8020
8021 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8022 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8023 /*-------------------------------------------------------------------------
8024 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 -------------------------------------------------------------------------*/
8027 wpalMutexAcquire(&pWDICtx->wptMutex);
8028
8029 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008030 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008031 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8033 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8034 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008035
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 {
8038#ifdef WLAN_FEATURE_VOWIFI_11R
8039 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008040 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008041 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008042 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008043 if ( NULL == pBSSSes )
8044 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008045
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8047 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008048
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008052
Jeff Johnson295189b2012-06-20 16:38:30 -07008053 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008054 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8055 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008056 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008057
Jeff Johnson295189b2012-06-20 16:38:30 -07008058 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008060 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8061#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008063 * Request in case of IBSS*/
8064 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8065 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8066 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8067 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8068 {
8069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008070 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008071 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008073 if ( NULL == pBSSSes )
8074 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008075
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8077 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008078
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008080 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008081 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008082
Jeff Johnson295189b2012-06-20 16:38:30 -07008083 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008084 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8085 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008086 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008087
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008089 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008090 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8091 }
8092 else
8093 {
8094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008095 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8096 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8097 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8098
Jeff Johnson295189b2012-06-20 16:38:30 -07008099 /* for IBSS testing */
8100 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008101 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008102 }
8103#endif
8104 }
8105
8106 /*------------------------------------------------------------------------
8107 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008108 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 ------------------------------------------------------------------------*/
8110 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8111 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8113 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8114 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8115 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008116
Jeff Johnsone7245742012-09-05 17:12:55 -07008117 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008118
8119 wpalMutexRelease(&pWDICtx->wptMutex);
8120
Jeff Johnsone7245742012-09-05 17:12:55 -07008121 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008122 }
8123
8124 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008125 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8126 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 sizeof(pWDICtx->wdiCachedConfigBssReq));
8128
8129 wpalMutexRelease(&pWDICtx->wptMutex);
8130
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8132#ifdef WLAN_FEATURE_11AC
8133 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008134 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 else
8136#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008137 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008138
8139 /*-----------------------------------------------------------------------
8140 Get message buffer
8141 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008142 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008143 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8144 ( usSendSize < (usDataOffset + uMsgSize )))
8145 {
8146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008147 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008148 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8149 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008150 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 }
8152
8153 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008154#ifdef WLAN_FEATURE_11AC
8155 if (WDI_getFwWlanFeatCaps(DOT11AC))
8156 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8157 &pwdiConfigBSSParams->wdiReqInfo);
8158 else
8159#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008160 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008161 &pwdiConfigBSSParams->wdiReqInfo);
8162
8163 /* Need to fill in the STA Index to invalid, since at this point we have not
8164 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008165 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008166
8167 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8169
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008170#ifdef WLAN_FEATURE_11AC
8171 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8172 wpalMemoryCopy( pSendBuffer+usDataOffset,
8173 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8174 uMsgSize);
8175 }else
8176#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008177 {
8178 if ( uMsgSize <= sizeof(tConfigBssParams) )
8179 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07008180 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008181 &halConfigBssReqMsg.uBssParams.configBssParams,
8182 uMsgSize);
8183 }
8184 else
8185 {
8186 return WDI_STATUS_E_FAILURE;
8187 }
8188 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008189
8190 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008192
8193 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008196 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8197 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 WDI_CONFIG_BSS_RESP);
8199
8200}/*WDI_ProcessConfigBSSReq*/
8201
8202
8203/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008204 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008205 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008206
8207 @param pWDICtx: pointer to the WLAN DAL context
8208 pEventData: pointer to the event information structure
8209
Jeff Johnson295189b2012-06-20 16:38:30 -07008210 @see
8211 @return Result of the function call
8212*/
8213WDI_Status
8214WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008215(
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 WDI_ControlBlockType* pWDICtx,
8217 WDI_EventInfoType* pEventData
8218)
8219{
8220 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8221 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 wpt_uint16 usDataOffset = 0;
8226 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008228
Jeff Johnsone7245742012-09-05 17:12:55 -07008229 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8231
8232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 -------------------------------------------------------------------------*/
8235 if (( NULL == pEventData ) ||
8236 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8237 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8238 {
8239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008240 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 }
8244
8245 /*-------------------------------------------------------------------------
8246 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008247 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008248 -------------------------------------------------------------------------*/
8249 wpalMutexAcquire(&pWDICtx->wptMutex);
8250
8251 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008254 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8255 pwdiDelBSSParams->ucBssIdx,
8256 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008257
Jeff Johnsone7245742012-09-05 17:12:55 -07008258 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 {
8260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 "%s: BSS does not yet exist. ucBssIdx %d",
8262 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008263
8264 wpalMutexRelease(&pWDICtx->wptMutex);
8265
8266 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008267 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008268
8269 /*------------------------------------------------------------------------
8270 Check if this BSS is being currently processed or queued,
8271 if queued - queue the new request as well
8272 ------------------------------------------------------------------------*/
8273 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8276 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8277 __func__, pwdiDelBSSParams->ucBssIdx);
8278
8279 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8280
8281 wpalMutexRelease(&pWDICtx->wptMutex);
8282
8283 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008284 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008285
Jeff Johnson295189b2012-06-20 16:38:30 -07008286 /*-----------------------------------------------------------------------
8287 If we receive a Del BSS request for an association that is already in
8288 progress, it indicates that the assoc has failed => we no longer have
8289 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008290 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008291 -----------------------------------------------------------------------*/
8292 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8293 {
8294 /*We can switch to false here because even if a subsequent Join comes in
8295 it will only be processed when DAL transitions out of BUSY state which
8296 happens when the Del BSS request comes */
8297 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8298
8299 /*Former association is complete - prepare next pending assoc for
8300 processing */
8301 WDI_DequeueAssocRequest(pWDICtx);
8302 }
8303
8304 wpalMutexRelease(&pWDICtx->wptMutex);
8305 /*-----------------------------------------------------------------------
8306 Get message buffer
8307 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008308 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008309 sizeof(halBssReqMsg.deleteBssParams),
8310 &pSendBuffer, &usDataOffset, &usSendSize))||
8311 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8312 {
8313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008314 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008318 }
8319
8320 /*Fill in the message request structure*/
8321
8322 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008323 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008324
Jeff Johnsone7245742012-09-05 17:12:55 -07008325 wpalMemoryCopy( pSendBuffer+usDataOffset,
8326 &halBssReqMsg.deleteBssParams,
8327 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008328
8329 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008331
Jeff Johnsone7245742012-09-05 17:12:55 -07008332
Jeff Johnson295189b2012-06-20 16:38:30 -07008333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008335 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008336 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008337 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8338
Jeff Johnsone7245742012-09-05 17:12:55 -07008339
Jeff Johnson295189b2012-06-20 16:38:30 -07008340}/*WDI_ProcessDelBSSReq*/
8341
8342/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008343 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008344 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008345
8346 @param pWDICtx: pointer to the WLAN DAL context
8347 pEventData: pointer to the event information structure
8348
Jeff Johnson295189b2012-06-20 16:38:30 -07008349 @see
8350 @return Result of the function call
8351*/
8352WDI_Status
8353WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008354(
Jeff Johnson295189b2012-06-20 16:38:30 -07008355 WDI_ControlBlockType* pWDICtx,
8356 WDI_EventInfoType* pEventData
8357)
8358{
8359 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8360 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008363 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008364 wpt_uint16 usDataOffset = 0;
8365 wpt_uint16 usSendSize = 0;
8366 wpt_uint16 uMsgSize = 0;
8367 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008368 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008369
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8372
8373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 -------------------------------------------------------------------------*/
8376 if (( NULL == pEventData ) ||
8377 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8378 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8379 {
8380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 }
8385
8386 /*-------------------------------------------------------------------------
8387 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008388 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008389 -------------------------------------------------------------------------*/
8390 wpalMutexAcquire(&pWDICtx->wptMutex);
8391
8392 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008393 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008394 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008395 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8396 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8397 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008398
8399 if ( NULL == pBSSSes )
8400 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8402 "%s: Association sequence for this BSS does not yet exist - "
8403 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8404 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008405
8406 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 }
8409
8410 /*------------------------------------------------------------------------
8411 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008412 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008413 ------------------------------------------------------------------------*/
8414 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8415 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8417 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8418 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008419
Jeff Johnsone7245742012-09-05 17:12:55 -07008420 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008421
8422 wpalMutexRelease(&pWDICtx->wptMutex);
8423
Jeff Johnsone7245742012-09-05 17:12:55 -07008424 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 }
8426
8427 /*-----------------------------------------------------------------------
8428 If Post Assoc was not yet received - the current association must
8429 be in progress
8430 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8433 {
8434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8435 "Association sequence for this BSS association no longer in "
8436 "progress - not allowed");
8437
8438 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008439 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008440 }
8441
8442 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 -----------------------------------------------------------------------*/
8445 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8446 {
8447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8448 "Post Assoc not allowed before JOIN - failing request");
8449
8450 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008452 }
8453
8454 wpalMutexRelease(&pWDICtx->wptMutex);
8455
8456 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8457 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8458 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008459 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008460 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8463 ( usSendSize < (usDataOffset + uMsgSize )))
8464 {
8465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008466 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008470 }
8471
8472 /*Copy the STA parameters */
8473 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8474 &pwdiPostAssocParams->wdiSTAParams );
8475
8476 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008477 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 WDI_STATableFindStaidByAddr(pWDICtx,
8479 pwdiPostAssocParams->wdiSTAParams.macSTA,
8480 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8481 {
8482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008483 MAC_ADDRESS_STR
8484 ": This station does not exist in the WDI Station Table",
8485 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008487 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008488 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 }
8490
8491 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 pBSSSes->ucBSSIdx;
8494
8495 /*Copy the BSS parameters */
8496 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8497 &pwdiPostAssocParams->wdiBSSParams);
8498
8499 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008500 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 WDI_STATableFindStaidByAddr(pWDICtx,
8502 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 {
8505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008506 MAC_ADDRESS_STR
8507 ": This station does not exist in the WDI Station Table",
8508 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008509 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008510 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 }
8513
8514 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 pBSSSes->ucBSSIdx;
8517
Jeff Johnsone7245742012-09-05 17:12:55 -07008518
8519 wpalMemoryCopy( pSendBuffer+usDataOffset,
8520 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8521 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008522
8523 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8524
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8526 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8527 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008528
Jeff Johnsone7245742012-09-05 17:12:55 -07008529
Jeff Johnson295189b2012-06-20 16:38:30 -07008530 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008532
Jeff Johnsone7245742012-09-05 17:12:55 -07008533
8534 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008535 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008537
8538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008539 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008540 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008542 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8543
Jeff Johnsone7245742012-09-05 17:12:55 -07008544
Jeff Johnson295189b2012-06-20 16:38:30 -07008545}/*WDI_ProcessPostAssocReq*/
8546
8547/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008548 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008549 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008550
8551 @param pWDICtx: pointer to the WLAN DAL context
8552 pEventData: pointer to the event information structure
8553
Jeff Johnson295189b2012-06-20 16:38:30 -07008554 @see
8555 @return Result of the function call
8556*/
8557WDI_Status
8558WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008559(
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 WDI_ControlBlockType* pWDICtx,
8561 WDI_EventInfoType* pEventData
8562)
8563{
8564 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8565 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008566 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008567 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008568 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008569 wpt_uint16 usDataOffset = 0;
8570 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008571 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8573
Jeff Johnsone7245742012-09-05 17:12:55 -07008574 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8576
8577 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008578 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008579 -------------------------------------------------------------------------*/
8580 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8581 ( NULL == pEventData->pCBfnc ))
8582 {
8583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 }
8588
8589 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8590 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8591 /*-------------------------------------------------------------------------
8592 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008593 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 -------------------------------------------------------------------------*/
8595 wpalMutexAcquire(&pWDICtx->wptMutex);
8596
8597 /*------------------------------------------------------------------------
8598 Find the BSS for which the request is made and identify WDI session
8599 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8601 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008602 &macBSSID))
8603 {
8604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008605 "This station does not exist in the WDI Station Table %d",
8606 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008607 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008609 }
8610
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8612 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8615 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8616 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008617
8618 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 }
8621
8622 /*------------------------------------------------------------------------
8623 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008624 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008625 ------------------------------------------------------------------------*/
8626 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8627 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8629 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8630 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008631
Jeff Johnsone7245742012-09-05 17:12:55 -07008632 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008633 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008634 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 }
8636
8637 wpalMutexRelease(&pWDICtx->wptMutex);
8638 /*-----------------------------------------------------------------------
8639 Get message buffer
8640 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008641 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008642 sizeof(halDelStaReqMsg.delStaParams),
8643 &pSendBuffer, &usDataOffset, &usSendSize))||
8644 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8645 {
8646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008647 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 }
8652
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8654 wpalMemoryCopy( pSendBuffer+usDataOffset,
8655 &halDelStaReqMsg.delStaParams,
8656 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008657
8658 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008659 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008660
8661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008664 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008665 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8666
8667}/*WDI_ProcessDelSTAReq*/
8668
8669
8670/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008671 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008672==========================================================================*/
8673/**
8674 @brief Process Set BSS Key Request function (called when Main FSM
8675 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008676
8677 @param pWDICtx: pointer to the WLAN DAL context
8678 pEventData: pointer to the event information structure
8679
Jeff Johnson295189b2012-06-20 16:38:30 -07008680 @see
8681 @return Result of the function call
8682*/
8683WDI_Status
8684WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008685(
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 WDI_ControlBlockType* pWDICtx,
8687 WDI_EventInfoType* pEventData
8688)
8689{
8690 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8691 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008692 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008693 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008694 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008695 wpt_uint16 usDataOffset = 0;
8696 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008697 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8699 wpt_uint8 keyIndex = 0;
8700
8701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8702
8703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 -------------------------------------------------------------------------*/
8706 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8707 ( NULL == pEventData->pCBfnc ))
8708 {
8709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008710 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 }
8714
8715 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8716 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8717 /*-------------------------------------------------------------------------
8718 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008719 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 -------------------------------------------------------------------------*/
8721 wpalMutexAcquire(&pWDICtx->wptMutex);
8722
8723 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008724 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008725 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008726 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8727 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8728 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008729
Jeff Johnsone7245742012-09-05 17:12:55 -07008730 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008731 {
8732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8734 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008735
8736 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008738 }
8739
8740 /*------------------------------------------------------------------------
8741 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008742 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008743 ------------------------------------------------------------------------*/
8744 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8745 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8747 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8748 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008749
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008751 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 }
8754
8755
8756 wpalMutexRelease(&pWDICtx->wptMutex);
8757 /*-----------------------------------------------------------------------
8758 Get message buffer
8759 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008760 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008761 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8762 &pSendBuffer, &usDataOffset, &usSendSize))||
8763 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8764 {
8765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008766 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 }
8771
8772 /*-----------------------------------------------------------------------
8773 Copy the Key parameters into the HAL message
8774 -----------------------------------------------------------------------*/
8775
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008777
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008779 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8780
Jeff Johnsone7245742012-09-05 17:12:55 -07008781 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8783
8784 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8785 keyIndex++)
8786 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8789 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8790 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8791 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8792 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8793 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008794 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008795 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008798 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8800 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008802 WDI_MAX_KEY_LENGTH);
8803 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008804
8805 wpalMemoryCopy( pSendBuffer+usDataOffset,
8806 &halSetBssKeyReqMsg.setBssKeyParams,
8807 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008808
8809 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008810 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008811
8812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008813 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008814 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8816 wdiSetBSSKeyRspCb, pEventData->pUserData,
8817 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008818
8819}/*WDI_ProcessSetBssKeyReq*/
8820
8821/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008822 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008823 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008824
8825 @param pWDICtx: pointer to the WLAN DAL context
8826 pEventData: pointer to the event information structure
8827
Jeff Johnson295189b2012-06-20 16:38:30 -07008828 @see
8829 @return Result of the function call
8830*/
8831WDI_Status
8832WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008833(
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 WDI_ControlBlockType* pWDICtx,
8835 WDI_EventInfoType* pEventData
8836)
8837{
8838 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8839 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 wpt_uint16 usDataOffset = 0;
8844 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008845 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008846 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8848
8849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008850 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008851 -------------------------------------------------------------------------*/
8852 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8853 ( NULL == pEventData->pCBfnc ))
8854 {
8855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008856 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008857 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008859 }
8860
8861 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8862 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8863 /*-------------------------------------------------------------------------
8864 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 -------------------------------------------------------------------------*/
8867 wpalMutexAcquire(&pWDICtx->wptMutex);
8868
8869 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008871 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8873 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8874 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008875
Jeff Johnsone7245742012-09-05 17:12:55 -07008876 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008877 {
8878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8880 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008881
8882 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008883 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008884 }
8885
8886 /*------------------------------------------------------------------------
8887 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008889 ------------------------------------------------------------------------*/
8890 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8891 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8893 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8894 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008895
Jeff Johnsone7245742012-09-05 17:12:55 -07008896 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008897 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 }
8900
8901
8902 wpalMutexRelease(&pWDICtx->wptMutex);
8903
8904 /*-----------------------------------------------------------------------
8905 Get message buffer
8906 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008907 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8909 &pSendBuffer, &usDataOffset, &usSendSize))||
8910 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8911 {
8912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008913 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 }
8918 /*-----------------------------------------------------------------------
8919 Copy the Key parameters into the HAL message
8920 -----------------------------------------------------------------------*/
8921 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8922
Jeff Johnsone7245742012-09-05 17:12:55 -07008923 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008924 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8925
8926 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8927
Jeff Johnsone7245742012-09-05 17:12:55 -07008928 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008929 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8930
Jeff Johnsone7245742012-09-05 17:12:55 -07008931 wpalMemoryCopy( pSendBuffer+usDataOffset,
8932 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8933 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008934
8935 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008936 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008937
8938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008940 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008941 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008942 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008943 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008944}/*WDI_ProcessRemoveBssKeyReq*/
8945
8946/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008949
8950 @param pWDICtx: pointer to the WLAN DAL context
8951 pEventData: pointer to the event information structure
8952
Jeff Johnson295189b2012-06-20 16:38:30 -07008953 @see
8954 @return Result of the function call
8955*/
8956WDI_Status
8957WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008958(
Jeff Johnson295189b2012-06-20 16:38:30 -07008959 WDI_ControlBlockType* pWDICtx,
8960 WDI_EventInfoType* pEventData
8961)
8962{
8963 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8964 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8965 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008967 wpt_uint16 usDataOffset = 0;
8968 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008970 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8973 wpt_uint8 keyIndex = 0;
8974
8975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8976
8977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 -------------------------------------------------------------------------*/
8980 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8981 ( NULL == pEventData->pCBfnc ))
8982 {
8983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008987 }
8988
8989 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8990 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8991 /*-------------------------------------------------------------------------
8992 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 -------------------------------------------------------------------------*/
8995 wpalMutexAcquire(&pWDICtx->wptMutex);
8996
8997 /*------------------------------------------------------------------------
8998 Find the BSS for which the request is made and identify WDI session
8999 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009000 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9001 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 &macBSSID))
9003 {
9004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009005 "This station does not exist in the WDI Station Table %d",
9006 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 }
9010
Jeff Johnsone7245742012-09-05 17:12:55 -07009011 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9012 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9015 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9016 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009017
9018 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009021
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 /*------------------------------------------------------------------------
9023 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009024 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009025 ------------------------------------------------------------------------*/
9026 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9027 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9029 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9030 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009031
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 }
9036
9037
9038 wpalMutexRelease(&pWDICtx->wptMutex);
9039 /*-----------------------------------------------------------------------
9040 Get message buffer
9041 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009042 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009043 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9044 &pSendBuffer, &usDataOffset, &usSendSize))||
9045 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9046 {
9047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009048 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 }
9053 /*-----------------------------------------------------------------------
9054 Copy the STA Key parameters into the HAL message
9055 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009056 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009057 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9058
Jeff Johnsone7245742012-09-05 17:12:55 -07009059 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9061
9062 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9063
9064 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9065
9066 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9067
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9069 keyIndex++)
9070 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9073 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9074 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9075 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9076 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9077 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9084 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009085 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 WDI_MAX_KEY_LENGTH);
9087 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009088
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 wpalMemoryCopy( pSendBuffer+usDataOffset,
9090 &halSetStaKeyReqMsg.setStaKeyParams,
9091 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009092
9093 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009094 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009095
9096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9100 wdiSetSTAKeyRspCb, pEventData->pUserData,
9101 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009102
9103}/*WDI_ProcessSetSTAKeyReq*/
9104
9105/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009108
9109 @param pWDICtx: pointer to the WLAN DAL context
9110 pEventData: pointer to the event information structure
9111
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 @see
9113 @return Result of the function call
9114*/
9115WDI_Status
9116WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009117(
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 WDI_ControlBlockType* pWDICtx,
9119 WDI_EventInfoType* pEventData
9120)
9121{
9122 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9123 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9124 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009125 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009126 wpt_uint16 usDataOffset = 0;
9127 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 wpt_macAddr macBSSID;
9130 wpt_uint8 ucCurrentBSSSesIdx;
9131 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9133
9134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009135 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 -------------------------------------------------------------------------*/
9137 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9138 ( NULL == pEventData->pCBfnc ))
9139 {
9140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009141 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 }
9145
9146 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9147 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9148 /*-------------------------------------------------------------------------
9149 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 -------------------------------------------------------------------------*/
9152 wpalMutexAcquire(&pWDICtx->wptMutex);
9153
9154 /*------------------------------------------------------------------------
9155 Find the BSS for which the request is made and identify WDI session
9156 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009157 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9158 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 &macBSSID))
9160 {
9161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009162 "This station does not exist in the WDI Station Table %d",
9163 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009164 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009166 }
9167
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9169 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9172 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9173 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009174
9175 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009177 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009178
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 /*------------------------------------------------------------------------
9180 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009181 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 ------------------------------------------------------------------------*/
9183 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9184 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9186 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9187 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009188
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009191 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009192 }
9193
9194
9195
9196 wpalMutexRelease(&pWDICtx->wptMutex);
9197 /*-----------------------------------------------------------------------
9198 Get message buffer
9199 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9202 &pSendBuffer, &usDataOffset, &usSendSize))||
9203 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9204 {
9205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009206 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 }
9211
9212 /*-----------------------------------------------------------------------
9213 Copy the Key parameters into the HAL message
9214 -----------------------------------------------------------------------*/
9215
Jeff Johnsone7245742012-09-05 17:12:55 -07009216 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009217 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9218
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9221
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9224
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9227
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 wpalMemoryCopy( pSendBuffer+usDataOffset,
9229 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9230 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009231
9232 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009233 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009234
9235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009236 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009237 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009241
9242}/*WDI_ProcessRemoveSTAKeyReq*/
9243
9244/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009247
9248 @param pWDICtx: pointer to the WLAN DAL context
9249 pEventData: pointer to the event information structure
9250
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 @see
9252 @return Result of the function call
9253*/
9254WDI_Status
9255WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009256(
Jeff Johnson295189b2012-06-20 16:38:30 -07009257 WDI_ControlBlockType* pWDICtx,
9258 WDI_EventInfoType* pEventData
9259)
9260{
9261 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9262 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9263 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 wpt_uint16 usDataOffset = 0;
9266 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009268 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009270 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9271 wpt_uint8 keyIndex = 0;
9272
9273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9274
9275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 -------------------------------------------------------------------------*/
9278 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9279 ( NULL == pEventData->pCBfnc ))
9280 {
9281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009285 }
9286
9287 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9288 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9289 /*-------------------------------------------------------------------------
9290 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009291 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 -------------------------------------------------------------------------*/
9293 wpalMutexAcquire(&pWDICtx->wptMutex);
9294
9295 /*------------------------------------------------------------------------
9296 Find the BSS for which the request is made and identify WDI session
9297 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009298 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9299 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009300 &macBSSID))
9301 {
9302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009303 "This station does not exist in the WDI Station Table %d",
9304 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009305 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 }
9308
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9310 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 {
9312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009313 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009315
9316 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009317 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009319
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 /*------------------------------------------------------------------------
9321 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009322 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009323 ------------------------------------------------------------------------*/
9324 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9325 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9327 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9328 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009329
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009331 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 }
9334
9335
9336 wpalMutexRelease(&pWDICtx->wptMutex);
9337 /*-----------------------------------------------------------------------
9338 Get message buffer
9339 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009341 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9342 &pSendBuffer, &usDataOffset, &usSendSize))||
9343 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9344 {
9345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009346 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 }
9351 /*-----------------------------------------------------------------------
9352 Copy the STA Key parameters into the HAL message
9353 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009354 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9356
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9359
9360 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9361
9362 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9363
9364 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9365
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9367 keyIndex++)
9368 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9371 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9372 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9373 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9374 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9375 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009376 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009377 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009378 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009379 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009380 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009381 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9382 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009384 WDI_MAX_KEY_LENGTH);
9385 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009386
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 wpalMemoryCopy( pSendBuffer+usDataOffset,
9388 &halSetStaKeyReqMsg.setStaKeyParams,
9389 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009390
9391 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009393
9394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009397 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9398 wdiSetSTAKeyRspCb, pEventData->pUserData,
9399 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009400
9401}/*WDI_ProcessSetSTABcastKeyReq*/
9402
9403/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009404 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009405 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009406
9407 @param pWDICtx: pointer to the WLAN DAL context
9408 pEventData: pointer to the event information structure
9409
Jeff Johnson295189b2012-06-20 16:38:30 -07009410 @see
9411 @return Result of the function call
9412*/
9413WDI_Status
9414WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009415(
Jeff Johnson295189b2012-06-20 16:38:30 -07009416 WDI_ControlBlockType* pWDICtx,
9417 WDI_EventInfoType* pEventData
9418)
9419{
9420 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9421 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9422 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009424 wpt_uint16 usDataOffset = 0;
9425 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009427 wpt_macAddr macBSSID;
9428 wpt_uint8 ucCurrentBSSSesIdx;
9429 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9431
9432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009433 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009434 -------------------------------------------------------------------------*/
9435 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9436 ( NULL == pEventData->pCBfnc ))
9437 {
9438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009439 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 }
9443
9444 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9445 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9446 /*-------------------------------------------------------------------------
9447 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 -------------------------------------------------------------------------*/
9450 wpalMutexAcquire(&pWDICtx->wptMutex);
9451
9452 /*------------------------------------------------------------------------
9453 Find the BSS for which the request is made and identify WDI session
9454 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9456 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 &macBSSID))
9458 {
9459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009460 "This station does not exist in the WDI Station Table %d",
9461 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009464 }
9465
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9467 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9470 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9471 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009472
9473 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009474 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009475 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009476
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 /*------------------------------------------------------------------------
9478 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 ------------------------------------------------------------------------*/
9481 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9482 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9484 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9485 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009486
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009489 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 }
9491
9492
9493
9494 wpalMutexRelease(&pWDICtx->wptMutex);
9495 /*-----------------------------------------------------------------------
9496 Get message buffer
9497 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009498 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9500 &pSendBuffer, &usDataOffset, &usSendSize))||
9501 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9502 {
9503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009504 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 }
9509
9510 /*-----------------------------------------------------------------------
9511 Copy the Key parameters into the HAL message
9512 -----------------------------------------------------------------------*/
9513
Jeff Johnsone7245742012-09-05 17:12:55 -07009514 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009515 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9516
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9519
Jeff Johnsone7245742012-09-05 17:12:55 -07009520 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009521 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9522
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9525
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 wpalMemoryCopy( pSendBuffer+usDataOffset,
9527 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9528 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009529
9530 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009532
9533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009534 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009535 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009536 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009537 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009538 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009539
9540}/*WDI_ProcessRemoveSTABcastKeyReq*/
9541
9542/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009543 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009544==========================================================================*/
9545/**
9546 @brief Process Add TSpec Request function (called when Main FSM
9547 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009548
9549 @param pWDICtx: pointer to the WLAN DAL context
9550 pEventData: pointer to the event information structure
9551
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 @see
9553 @return Result of the function call
9554*/
9555WDI_Status
9556WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009557(
Jeff Johnson295189b2012-06-20 16:38:30 -07009558 WDI_ControlBlockType* pWDICtx,
9559 WDI_EventInfoType* pEventData
9560)
9561{
9562 WDI_AddTSReqParamsType* pwdiAddTSParams;
9563 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 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;
9571 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009572
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9574
9575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 -------------------------------------------------------------------------*/
9578 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9579 ( NULL == pEventData->pCBfnc ))
9580 {
9581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009582 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009584 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 }
9586
9587 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9588 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9589 /*-------------------------------------------------------------------------
9590 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 -------------------------------------------------------------------------*/
9593 wpalMutexAcquire(&pWDICtx->wptMutex);
9594
9595 /*------------------------------------------------------------------------
9596 Find the BSS for which the request is made and identify WDI session
9597 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9599 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 &macBSSID))
9601 {
9602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009603 "This station does not exist in the WDI Station Table %d",
9604 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 }
9608
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9610 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009611 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9613 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9614 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009615
9616 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009619
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 /*------------------------------------------------------------------------
9621 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 ------------------------------------------------------------------------*/
9624 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9625 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9627 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9628 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009629
Jeff Johnsone7245742012-09-05 17:12:55 -07009630 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009631 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 }
9634
9635 wpalMutexRelease(&pWDICtx->wptMutex);
9636 /*-----------------------------------------------------------------------
9637 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009638 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9641 sizeof(halAddTsParams),
9642 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009643 &usSendSize))||
9644 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9645 {
9646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009647 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 }
9652
9653 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9654 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9655
9656 //TSPEC IE
9657 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9658 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009666 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009667 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009668 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009673 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009674 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009683 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009684 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009687 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9689
9690 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009693 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009694 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009695 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009699 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009700 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009701 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9705
9706 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009707 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009708 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9711
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 wpalMemoryCopy( pSendBuffer+usDataOffset,
9713 &halAddTsParams,
9714 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009715
9716 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009718
9719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009721 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009722 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009723 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009724 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009725}/*WDI_ProcessAddTSpecReq*/
9726
9727
9728/**
9729 @brief Process Del TSpec Request function (called when Main FSM
9730 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009731
9732 @param pWDICtx: pointer to the WLAN DAL context
9733 pEventData: pointer to the event information structure
9734
Jeff Johnson295189b2012-06-20 16:38:30 -07009735 @see
9736 @return Result of the function call
9737*/
9738WDI_Status
9739WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009740(
Jeff Johnson295189b2012-06-20 16:38:30 -07009741 WDI_ControlBlockType* pWDICtx,
9742 WDI_EventInfoType* pEventData
9743)
9744{
9745 WDI_DelTSReqParamsType* pwdiDelTSParams;
9746 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009747 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009748 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 wpt_uint16 usDataOffset = 0;
9751 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9754
9755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009756 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009757 -------------------------------------------------------------------------*/
9758 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9759 ( NULL == pEventData->pCBfnc ))
9760 {
9761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 }
9766
9767 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9768 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9769
9770 /*-------------------------------------------------------------------------
9771 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009773 -------------------------------------------------------------------------*/
9774 wpalMutexAcquire(&pWDICtx->wptMutex);
9775
9776 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009778 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009779 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9780 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9781 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009782
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009784 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9786 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9787 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9788
Jeff Johnson295189b2012-06-20 16:38:30 -07009789 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009790 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 }
9792
9793 /*------------------------------------------------------------------------
9794 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 ------------------------------------------------------------------------*/
9797 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9798 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9800 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9801 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009802
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 }
9807
9808
9809 wpalMutexRelease(&pWDICtx->wptMutex);
9810 /*-----------------------------------------------------------------------
9811 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9816 &pSendBuffer, &usDataOffset, &usSendSize))||
9817 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9818 {
9819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009820 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009821 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009824 }
9825
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 wpalMemoryCopy( pSendBuffer+usDataOffset,
9827 &pwdiDelTSParams->wdiDelTSInfo,
9828 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009829
9830 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009832
9833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009834 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009835 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9837 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009838}/*WDI_ProcessDelTSpecReq*/
9839
9840/**
9841 @brief Process Update EDCA Params Request function (called when
9842 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009843
9844 @param pWDICtx: pointer to the WLAN DAL context
9845 pEventData: pointer to the event information structure
9846
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 @see
9848 @return Result of the function call
9849*/
9850WDI_Status
9851WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009852(
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 WDI_ControlBlockType* pWDICtx,
9854 WDI_EventInfoType* pEventData
9855)
9856{
9857 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9858 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009859 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009860 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009861 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009862 wpt_uint16 usDataOffset = 0;
9863 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009864 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9866
9867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009869 -------------------------------------------------------------------------*/
9870 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9871 ( NULL == pEventData->pCBfnc ))
9872 {
9873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009877 }
9878
9879 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9880 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9881 /*-------------------------------------------------------------------------
9882 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 -------------------------------------------------------------------------*/
9885 wpalMutexAcquire(&pWDICtx->wptMutex);
9886
9887 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009888 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009889 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9891 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9892 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009893
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 {
9896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009897 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9898 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009899
9900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009901 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009902 }
9903
9904 /*------------------------------------------------------------------------
9905 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009907 ------------------------------------------------------------------------*/
9908 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9909 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9911 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9912 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009913
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009916 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 }
9918
9919
9920 wpalMutexRelease(&pWDICtx->wptMutex);
9921 /*-----------------------------------------------------------------------
9922 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009924 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9927 &pSendBuffer, &usDataOffset, &usSendSize))||
9928 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9929 {
9930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009931 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 }
9936
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 wpalMemoryCopy( pSendBuffer+usDataOffset,
9938 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9939 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009940
9941 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009943
9944 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9948 wdiUpdateEDCARspCb, pEventData->pUserData,
9949 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009950}/*WDI_ProcessUpdateEDCAParamsReq*/
9951
9952/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009955
9956 @param pWDICtx: pointer to the WLAN DAL context
9957 pEventData: pointer to the event information structure
9958
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 @see
9960 @return Result of the function call
9961*/
9962WDI_Status
9963WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009964(
Jeff Johnson295189b2012-06-20 16:38:30 -07009965 WDI_ControlBlockType* pWDICtx,
9966 WDI_EventInfoType* pEventData
9967)
9968{
9969 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9970 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 wpt_uint16 usDataOffset = 0;
9975 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 wpt_macAddr macBSSID;
9978
9979 tAddBASessionReqMsg halAddBASessionReq;
9980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9981
9982 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009983 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009984 -------------------------------------------------------------------------*/
9985 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9986 ( NULL == pEventData->pCBfnc ))
9987 {
9988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009989 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009991 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009992 }
9993
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9998 /*-------------------------------------------------------------------------
9999 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010000 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010001 -------------------------------------------------------------------------*/
10002 wpalMutexAcquire(&pWDICtx->wptMutex);
10003
10004 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10008 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010009 &macBSSID))
10010 {
10011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010012 "This station does not exist in the WDI Station Table %d",
10013 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010014 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010016 }
10017
10018
Jeff Johnsone7245742012-09-05 17:12:55 -070010019 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010020
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010022 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10024 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10025 __func__, MAC_ADDR_ARRAY(macBSSID));
10026
Jeff Johnson295189b2012-06-20 16:38:30 -070010027 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010029 }
10030
10031 /*------------------------------------------------------------------------
10032 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 ------------------------------------------------------------------------*/
10035 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10036 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10038 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10039 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010040
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010042 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010043 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010044 }
10045
10046
10047 wpalMutexRelease(&pWDICtx->wptMutex);
10048 /*-----------------------------------------------------------------------
10049 Get message buffer
10050 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010051 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10052 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010053 sizeof(halAddBASessionReq.addBASessionParams),
10054 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010055 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010056 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10057 {
10058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010059 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 }
10064
10065 halAddBASessionReq.addBASessionParams.staIdx =
10066 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10067 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10068 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10069 WDI_MAC_ADDR_LEN);
10070 halAddBASessionReq.addBASessionParams.baTID =
10071 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10072 halAddBASessionReq.addBASessionParams.baPolicy =
10073 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10074 halAddBASessionReq.addBASessionParams.baBufferSize =
10075 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10076 halAddBASessionReq.addBASessionParams.baTimeout =
10077 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10078 halAddBASessionReq.addBASessionParams.baSSN =
10079 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10080 halAddBASessionReq.addBASessionParams.baDirection =
10081 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10082
Jeff Johnsone7245742012-09-05 17:12:55 -070010083 wpalMemoryCopy( pSendBuffer+usDataOffset,
10084 &halAddBASessionReq.addBASessionParams,
10085 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010086
10087 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010089
10090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010091 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010092 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010093 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10094 wdiAddBASessionRspCb, pEventData->pUserData,
10095 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010096}/*WDI_ProcessAddBASessionReq*/
10097
10098/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010099 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010100 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010101
10102 @param pWDICtx: pointer to the WLAN DAL context
10103 pEventData: pointer to the event information structure
10104
Jeff Johnson295189b2012-06-20 16:38:30 -070010105 @see
10106 @return Result of the function call
10107*/
10108WDI_Status
10109WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010110(
Jeff Johnson295189b2012-06-20 16:38:30 -070010111 WDI_ControlBlockType* pWDICtx,
10112 WDI_EventInfoType* pEventData
10113)
10114{
10115 WDI_DelBAReqParamsType* pwdiDelBAParams;
10116 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010117 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010119 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 wpt_uint16 usDataOffset = 0;
10121 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 wpt_macAddr macBSSID;
10124 tDelBAParams halDelBAparam;
10125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10126
10127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010128 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010129 -------------------------------------------------------------------------*/
10130 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10131 ( NULL == pEventData->pCBfnc ))
10132 {
10133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010137 }
10138
10139 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10140 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10141 /*-------------------------------------------------------------------------
10142 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010143 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 -------------------------------------------------------------------------*/
10145 wpalMutexAcquire(&pWDICtx->wptMutex);
10146
10147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010148 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010149 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010150 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10151 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010152 &macBSSID))
10153 {
10154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010155 "This station does not exist in the WDI Station Table %d",
10156 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010157 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 }
10160
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010162
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10166 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10167 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010168
10169 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010171 }
10172
10173 /*------------------------------------------------------------------------
10174 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 ------------------------------------------------------------------------*/
10177 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10178 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10180 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10181 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010182
Jeff Johnsone7245742012-09-05 17:12:55 -070010183 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010184 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010185 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010186 }
10187
10188 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010189 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 sizeof(halDelBAparam),
10191 &pSendBuffer, &usDataOffset, &usSendSize))||
10192 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10193 {
10194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010195 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 }
10200
10201 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10202 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10203 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10204
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 wpalMemoryCopy( pSendBuffer+usDataOffset,
10206 &halDelBAparam,
10207 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010208
10209 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010211
10212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010213 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010214 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010215 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10216 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010217}/*WDI_ProcessDelBAReq*/
10218
10219#ifdef FEATURE_WLAN_CCX
10220
10221WDI_Status
10222WDI_ProcessTSMStatsReq
10223(
10224 WDI_ControlBlockType* pWDICtx,
10225 WDI_EventInfoType* pEventData
10226)
10227{
10228 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10229 WDI_TsmRspCb wdiTSMRspCb;
10230 wpt_uint8 ucCurrentBSSSesIdx = 0;
10231 WDI_BSSSessionType* pBSSSes = NULL;
10232 wpt_uint8* pSendBuffer = NULL;
10233 wpt_uint16 usDataOffset = 0;
10234 wpt_uint16 usSendSize = 0;
10235 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10236 tTsmStatsParams halTsmStatsReqParams = {0};
10237
10238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10239
10240 /*-------------------------------------------------------------------------
10241 Sanity check
10242 -------------------------------------------------------------------------*/
10243 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10244 ( NULL == pEventData->pCBfnc ))
10245 {
10246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010248 WDI_ASSERT(0);
10249 return WDI_STATUS_E_FAILURE;
10250 }
10251
10252 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10253 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10254 /*-------------------------------------------------------------------------
10255 Check to see if we are in the middle of an association, if so queue, if
10256 not it means it is free to process request
10257 -------------------------------------------------------------------------*/
10258 wpalMutexAcquire(&pWDICtx->wptMutex);
10259
10260 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10261 if ( NULL == pBSSSes )
10262 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10264 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10265 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010266
10267 wpalMutexRelease(&pWDICtx->wptMutex);
10268 return WDI_STATUS_E_NOT_ALLOWED;
10269 }
10270
10271 /*------------------------------------------------------------------------
10272 Check if this BSS is being currently processed or queued,
10273 if queued - queue the new request as well
10274 ------------------------------------------------------------------------*/
10275 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10276 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10278 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10279 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010280
10281 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10282 wpalMutexRelease(&pWDICtx->wptMutex);
10283 return wdiStatus;
10284 }
10285
10286 wpalMutexRelease(&pWDICtx->wptMutex);
10287 /*-----------------------------------------------------------------------
10288 Get message buffer
10289 ! TO DO : proper conversion into the HAL Message Request Format
10290 -----------------------------------------------------------------------*/
10291 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10292 sizeof(halTsmStatsReqParams),
10293 &pSendBuffer, &usDataOffset, &usSendSize))||
10294 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10295 {
10296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010297 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 pEventData, pwdiTSMParams, wdiTSMRspCb);
10299 WDI_ASSERT(0);
10300 return WDI_STATUS_E_FAILURE;
10301 }
10302
10303 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10304 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10305 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10306 WDI_MAC_ADDR_LEN);
10307 wpalMemoryCopy( pSendBuffer+usDataOffset,
10308 &halTsmStatsReqParams,
10309 sizeof(halTsmStatsReqParams));
10310
10311 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10312 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10313
10314 /*-------------------------------------------------------------------------
10315 Send TSM Stats Request to HAL
10316 -------------------------------------------------------------------------*/
10317 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10318 wdiTSMRspCb, pEventData->pUserData,
10319 WDI_TSM_STATS_RESP);
10320}/*WDI_ProcessTSMStatsReq*/
10321
10322#endif
10323
10324
10325/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010326 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010327 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010328
10329 @param pWDICtx: pointer to the WLAN DAL context
10330 pEventData: pointer to the event information structure
10331
Jeff Johnson295189b2012-06-20 16:38:30 -070010332 @see
10333 @return Result of the function call
10334*/
10335WDI_Status
10336WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010337(
Jeff Johnson295189b2012-06-20 16:38:30 -070010338 WDI_ControlBlockType* pWDICtx,
10339 WDI_EventInfoType* pEventData
10340)
10341{
10342 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10343 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 wpt_uint16 usDataOffset = 0;
10346 wpt_uint16 usSendSize = 0;
10347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10348
10349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 -------------------------------------------------------------------------*/
10352 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10353 ( NULL == pEventData->pCBfnc ))
10354 {
10355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 }
10360
10361 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10362 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10363 /*-----------------------------------------------------------------------
10364 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010365 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010366 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010367 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010368 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10369 &pSendBuffer, &usDataOffset, &usSendSize))||
10370 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10371 {
10372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010373 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 }
10378
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 wpalMemoryCopy( pSendBuffer+usDataOffset,
10380 &pwdiFlushAcParams->wdiFlushAcInfo,
10381 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010382
10383 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010384 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010385
10386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010389 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10390 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010391}/*WDI_ProcessFlushAcReq*/
10392
10393/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010395 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010396
10397 @param pWDICtx: pointer to the WLAN DAL context
10398 pEventData: pointer to the event information structure
10399
Jeff Johnson295189b2012-06-20 16:38:30 -070010400 @see
10401 @return Result of the function call
10402*/
10403WDI_Status
10404WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010405(
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 WDI_ControlBlockType* pWDICtx,
10407 WDI_EventInfoType* pEventData
10408)
10409{
10410 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10411 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 wpt_uint16 usDataOffset = 0;
10414 wpt_uint16 usSendSize = 0;
10415
10416 tBtAmpEventMsg haltBtAmpEventMsg;
10417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10418
10419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010421 -------------------------------------------------------------------------*/
10422 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10423 ( NULL == pEventData->pCBfnc ))
10424 {
10425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010429 }
10430
10431 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10432 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10433 /*-----------------------------------------------------------------------
10434 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010435 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010436 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010437 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010438 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10439 &pSendBuffer, &usDataOffset, &usSendSize))||
10440 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10441 {
10442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010443 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010444 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 }
10448
Jeff Johnsone7245742012-09-05 17:12:55 -070010449 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010450 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 wpalMemoryCopy( pSendBuffer+usDataOffset,
10452 &haltBtAmpEventMsg.btAmpEventParams,
10453 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010454
10455 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010456 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010457
10458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10462 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010463}/*WDI_ProcessBtAmpEventReq*/
10464
10465/**
10466 @brief Process Add STA self Request function (called when Main FSM
10467 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010468
10469 @param pWDICtx: pointer to the WLAN DAL context
10470 pEventData: pointer to the event information structure
10471
Jeff Johnson295189b2012-06-20 16:38:30 -070010472 @see
10473 @return Result of the function call
10474*/
10475WDI_Status
10476WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010477(
Jeff Johnson295189b2012-06-20 16:38:30 -070010478 WDI_ControlBlockType* pWDICtx,
10479 WDI_EventInfoType* pEventData
10480)
10481{
10482 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10483 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 wpt_uint16 usDataOffset = 0;
10486 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010487 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10489
10490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010492 -------------------------------------------------------------------------*/
10493 if (( NULL == pEventData ) ||
10494 ( NULL == pEventData->pEventData) ||
10495 ( NULL == pEventData->pCBfnc))
10496 {
10497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010498 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010499 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
Jeff Johnsone7245742012-09-05 17:12:55 -070010503 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010504 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010505 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010506 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10507 /*-----------------------------------------------------------------------
10508 Get message buffer
10509 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10511 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010512 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010513 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010514 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010515 {
10516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010517 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 }
10522
10523 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10526
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010528 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10529 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10530 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10531 {
10532 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10533 }
10534 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10535 VOS_P2P_CLIENT_MODE) ||
10536 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10537 VOS_P2P_DEVICE))
10538 {
10539 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10540 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010541 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010542 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010543
10544 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010546
10547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010549 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010550 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10551 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10552 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010553}/*WDI_ProcessAddSTASelfReq*/
10554
10555
10556
10557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010558 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010559 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010560
10561 @param pWDICtx: pointer to the WLAN DAL context
10562 pEventData: pointer to the event information structure
10563
Jeff Johnson295189b2012-06-20 16:38:30 -070010564 @see
10565 @return Result of the function call
10566*/
10567WDI_Status
10568WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010569(
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 WDI_ControlBlockType* pWDICtx,
10571 WDI_EventInfoType* pEventData
10572)
10573{
10574 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10575 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010577 wpt_uint16 usDataOffset = 0;
10578 wpt_uint16 usSendSize = 0;
10579 tDelStaSelfParams halSetDelSelfSTAParams;
10580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10581
10582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010584 -------------------------------------------------------------------------*/
10585 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10586 ( NULL == pEventData->pCBfnc ))
10587 {
10588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010592 }
10593
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10596 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10597
10598 /*-----------------------------------------------------------------------
10599 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010600 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010602 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010603 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10604 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010605 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010606 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10607 {
10608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010609 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010610 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010613 }
10614
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010616 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10617
Jeff Johnsone7245742012-09-05 17:12:55 -070010618 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10619 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010620
10621 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010623
10624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010625 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010626 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10628 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 WDI_DEL_STA_SELF_RESP);
10630
10631}
10632
Jeff Johnsone7245742012-09-05 17:12:55 -070010633#ifdef FEATURE_OEM_DATA_SUPPORT
10634/**
10635 @brief Process Start Oem Data Request function (called when Main
10636 FSM allows it)
10637
10638 @param pWDICtx: pointer to the WLAN DAL context
10639 pEventData: pointer to the event information structure
10640
10641 @see
10642 @return Result of the function call
10643*/
10644WDI_Status
10645WDI_ProcessStartOemDataReq
10646(
10647 WDI_ControlBlockType* pWDICtx,
10648 WDI_EventInfoType* pEventData
10649)
10650{
10651 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10652 WDI_oemDataRspCb wdiOemDataRspCb;
10653 wpt_uint8* pSendBuffer = NULL;
10654 wpt_uint16 usDataOffset = 0;
10655 wpt_uint16 usSendSize = 0;
10656 wpt_uint16 reqLen;
10657 tStartOemDataReqParams* halStartOemDataReqParams;
10658
10659 /*-------------------------------------------------------------------------
10660 Sanity check
10661 -------------------------------------------------------------------------*/
10662 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10663 ( NULL == pEventData->pCBfnc ))
10664 {
10665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010666 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 WDI_ASSERT(0);
10668 return WDI_STATUS_E_FAILURE;
10669 }
10670
10671 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10672 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10673
10674 /*-----------------------------------------------------------------------
10675 Get message buffer
10676 -----------------------------------------------------------------------*/
10677
10678 reqLen = sizeof(tStartOemDataReqParams);
10679
10680 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10681 WDI_START_OEM_DATA_REQ, reqLen,
10682 &pSendBuffer, &usDataOffset, &usSendSize))||
10683 (usSendSize < (usDataOffset + reqLen)))
10684 {
10685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010686 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010687 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10688 WDI_ASSERT(0);
10689 return WDI_STATUS_E_FAILURE;
10690 }
10691
10692 //copying WDI OEM DATA REQ PARAMS to shared memory
10693 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10694
10695 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10696 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10697
10698 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10699 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10700
10701 /*-------------------------------------------------------------------------
10702 Send Start Request to HAL
10703 -------------------------------------------------------------------------*/
10704 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10705 wdiOemDataRspCb, pEventData->pUserData,
10706 WDI_START_OEM_DATA_RESP);
10707}/*WDI_ProcessStartOemDataReq*/
10708#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010709
10710/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010711 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010712 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010713
10714 @param pWDICtx: pointer to the WLAN DAL context
10715 pEventData: pointer to the event information structure
10716
Jeff Johnson295189b2012-06-20 16:38:30 -070010717 @see
10718 @return Result of the function call
10719*/
10720WDI_Status
10721WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010722(
Jeff Johnson295189b2012-06-20 16:38:30 -070010723 WDI_ControlBlockType* pWDICtx,
10724 WDI_EventInfoType* pEventData
10725)
10726{
10727 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10728 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 wpt_uint16 usDataOffset = 0;
10731 wpt_uint16 usSendSize = 0;
10732 tHalWlanHostResumeReqParam halResumeReqParams;
10733
10734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10735
10736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 -------------------------------------------------------------------------*/
10739 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10740 ( NULL == pEventData->pCBfnc ))
10741 {
10742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010743 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 }
10747
10748 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10749 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10750
10751 /*-----------------------------------------------------------------------
10752 Get message buffer
10753 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010755 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10756 &pSendBuffer, &usDataOffset, &usSendSize))||
10757 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10758 {
10759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010760 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010761 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010764 }
10765
Jeff Johnsone7245742012-09-05 17:12:55 -070010766 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010767 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010768
10769 wpalMemoryCopy( pSendBuffer+usDataOffset,
10770 &halResumeReqParams,
10771 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010772
10773 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010774 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010775
10776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010778 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010779 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10780 wdiHostResumeRspCb, pEventData->pUserData,
10781 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010782}/*WDI_ProcessHostResumeReq*/
10783
10784/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010785 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010786 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010787
10788 @param pWDICtx: pointer to the WLAN DAL context
10789 pEventData: pointer to the event information structure
10790
Jeff Johnson295189b2012-06-20 16:38:30 -070010791 @see
10792 @return Result of the function call
10793*/
10794WDI_Status
10795WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010796(
Jeff Johnson295189b2012-06-20 16:38:30 -070010797 WDI_ControlBlockType* pWDICtx,
10798 WDI_EventInfoType* pEventData
10799)
10800{
10801 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10802 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010803 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 wpt_uint16 usDataOffset = 0;
10805 wpt_uint16 usSendSize = 0;
10806 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10808
10809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010811 -------------------------------------------------------------------------*/
10812 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10813 ( NULL == pEventData->pCBfnc ))
10814 {
10815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010816 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010819 }
10820
10821 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10822 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010823
Jeff Johnson295189b2012-06-20 16:38:30 -070010824 /*-----------------------------------------------------------------------
10825 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010826 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010827 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 sizeof(halTxPerTrackingReqParam),
10830 &pSendBuffer, &usDataOffset, &usSendSize))||
10831 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10832 {
10833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010834 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010838 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010839
Jeff Johnson295189b2012-06-20 16:38:30 -070010840 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10841 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10842 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10843 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010844
10845 wpalMemoryCopy( pSendBuffer+usDataOffset,
10846 &halTxPerTrackingReqParam,
10847 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010848
10849 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010850 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010851
10852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10856 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010857}/*WDI_ProcessSetTxPerTrackingReq*/
10858
10859/*=========================================================================
10860 Indications
10861=========================================================================*/
10862
10863/**
10864 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010865
10866 @param pWDICtx: pointer to the WLAN DAL context
10867 pEventData: pointer to the event information structure
10868
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 @see
10870 @return Result of the function call
10871*/
10872WDI_Status
10873WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010874(
Jeff Johnson295189b2012-06-20 16:38:30 -070010875 WDI_ControlBlockType* pWDICtx,
10876 WDI_EventInfoType* pEventData
10877)
10878{
10879 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010880 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 wpt_uint16 usDataOffset = 0;
10882 wpt_uint16 usSendSize = 0;
10883 WDI_Status wdiStatus;
10884 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10886
10887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010889 -------------------------------------------------------------------------*/
10890 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10891 {
10892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010893 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 }
10897
10898 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10899
10900 /*-----------------------------------------------------------------------
10901 Get message buffer
10902 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010903 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10904 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 sizeof(halWlanSuspendIndparams),
10906 &pSendBuffer, &usDataOffset, &usSendSize))||
10907 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10908 {
10909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10910 "Unable to get send buffer in Suspend Ind ");
10911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010913 }
10914
10915 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10916 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10917
Jeff Johnsone7245742012-09-05 17:12:55 -070010918 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010919 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010920
Jeff Johnsone7245742012-09-05 17:12:55 -070010921 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10922 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010923
10924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 -------------------------------------------------------------------------*/
10927 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010928 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010929
Jeff Johnsone7245742012-09-05 17:12:55 -070010930 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010931 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10932}/*WDI_ProcessHostSuspendInd*/
10933
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010934
10935
10936/**
10937 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10938
10939 @param pWDICtx: pointer to the WLAN DAL context
10940 pEventData: pointer to the event information structure
10941
10942 @see
10943 @return Result of the function call
10944*/
10945WDI_Status
10946WDI_ProcessTrafficStatsInd
10947(
10948 WDI_ControlBlockType* pWDICtx,
10949 WDI_EventInfoType* pEventData
10950)
10951{
10952 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10953 wpt_uint8* pSendBuffer = NULL;
10954 wpt_uint16 usDataOffset = 0;
10955 wpt_uint16 usSendSize = 0;
10956 WDI_Status wdiStatus;
10957 tStatsClassBIndParams* pStatsClassBIndParams;
10958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10959
10960 /*-------------------------------------------------------------------------
10961 Sanity check
10962 -------------------------------------------------------------------------*/
10963 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10964 {
10965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10966 "%s: Invalid parameters in Traffic Stats ind",__func__);
10967 WDI_ASSERT(0);
10968 return WDI_STATUS_E_FAILURE;
10969 }
10970
10971 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10972
10973 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10974 {
10975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10976 "%s: Invalid parameters in Traffic Stats ind",__func__);
10977 WDI_ASSERT(0);
10978 return WDI_STATUS_E_FAILURE;
10979 }
10980
10981 /*-----------------------------------------------------------------------
10982 Get message buffer
10983 -----------------------------------------------------------------------*/
10984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10985 WDI_TRAFFIC_STATS_IND,
10986 sizeof(tStatsClassBIndParams),
10987 &pSendBuffer, &usDataOffset, &usSendSize))||
10988 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10989 {
10990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10991 "Unable to get send buffer in Traffic Stats Ind ");
10992 WDI_ASSERT(0);
10993 return WDI_STATUS_E_FAILURE;
10994 }
10995
10996 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10997
10998 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10999
11000 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11001 pTrafficStatsIndParams->pTrafficStats,
11002 pTrafficStatsIndParams->length);
11003
11004 /*-------------------------------------------------------------------------
11005 Send Suspend Request to HAL
11006 -------------------------------------------------------------------------*/
11007 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11008 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11009
11010 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11011 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11012}/*WDI_ProcessTrafficStatsInd*/
11013
Chet Lanctota96bb432013-03-18 10:26:30 -070011014#ifdef WLAN_FEATURE_11W
11015/**
11016 @brief Process Exclude Unencrypted Indications function (called
11017 when Main FSM allows it)
11018
11019 @param pWDICtx: pointer to the WLAN DAL context
11020 pEventData: pointer to the event information structure
11021
11022 @see
11023 @return Result of the function call
11024*/
11025WDI_Status
11026WDI_ProcessExcludeUnencryptInd
11027(
11028 WDI_ControlBlockType* pWDICtx,
11029 WDI_EventInfoType* pEventData
11030)
11031{
11032 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11033 wpt_uint8* pSendBuffer = NULL;
11034 wpt_uint16 usDataOffset = 0;
11035 wpt_uint16 usSendSize = 0;
11036 WDI_Status wdiStatus;
11037 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11039
11040 /*-------------------------------------------------------------------------
11041 Sanity check
11042 -------------------------------------------------------------------------*/
11043 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11044 {
11045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11046 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11047 WDI_ASSERT(0);
11048 return WDI_STATUS_E_FAILURE;
11049 }
11050
11051 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11052
11053 /*-----------------------------------------------------------------------
11054 Get message buffer
11055 -----------------------------------------------------------------------*/
11056 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11057 WDI_EXCLUDE_UNENCRYPTED_IND,
11058 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11059 &pSendBuffer, &usDataOffset, &usSendSize))||
11060 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11061 {
11062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11063 "Unable to get send buffer in Exclude Unencrypted Ind ");
11064 WDI_ASSERT(0);
11065 return WDI_STATUS_E_FAILURE;
11066 }
11067
11068 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11069
11070 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11071
11072 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11073 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11074
11075 /*-------------------------------------------------------------------------
11076 Send Suspend Request to HAL
11077 -------------------------------------------------------------------------*/
11078 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11079 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11080
11081 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11082 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11083}/*WDI_ProcessExcludeUnencryptInd*/
11084#endif
11085
Yue Ma365933a2013-08-14 15:59:08 -070011086/**
11087 @brief Process Add Periodic Tx Pattern Indication function (called when
11088 Main FSM allows it)
11089
11090 @param pWDICtx: pointer to the WLAN DAL context
11091 pEventData: pointer to the event information structure
11092
11093 @see
11094 @return Result of the function call
11095*/
11096WDI_Status
11097WDI_ProcessAddPeriodicTxPtrnInd
11098(
11099 WDI_ControlBlockType* pWDICtx,
11100 WDI_EventInfoType* pEventData
11101)
11102{
11103 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11104 wpt_uint8* pSendBuffer = NULL;
11105 wpt_uint16 usDataOffset = 0;
11106 wpt_uint16 usSendSize = 0;
11107 WDI_Status wdiStatus;
11108 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11109 wpt_uint8 selfStaIdx = 0;
11110
11111 /*-------------------------------------------------------------------------
11112 Sanity check
11113 -------------------------------------------------------------------------*/
11114 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11115 {
11116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11117 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11118 WDI_ASSERT(0);
11119 return WDI_STATUS_E_FAILURE;
11120 }
11121
11122 pAddPeriodicTxPtrnParams =
11123 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11124
11125 /*------------------------------------------------------------------------
11126 Get message buffer
11127 ------------------------------------------------------------------------*/
11128 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11129 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11130 &pSendBuffer, &usDataOffset, &usSendSize))||
11131 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11132 {
11133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11134 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11135 __func__);
11136 WDI_ASSERT(0);
11137 return WDI_STATUS_E_FAILURE;
11138 }
11139
11140 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11141
11142 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11143 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11144 &selfStaIdx))
11145 {
11146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11147 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011148 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011149
11150 return WDI_STATUS_E_FAILURE;
11151 }
11152
11153 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11154 halAddPeriodicTxPtrn->ucPtrnId =
11155 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11156 halAddPeriodicTxPtrn->usPtrnSize =
11157 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11158 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11159 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11160
11161 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11162 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11163 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11164
11165 /*-------------------------------------------------------------------------
11166 Send Indication to HAL
11167 -------------------------------------------------------------------------*/
11168 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11169 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11170
11171 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11172
11173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11174 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11175
11176 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11177} /* WDI_ProcessAddPeriodicTxPtrnInd */
11178
11179/**
11180 @brief Process Delete Periodic Tx Pattern Indication function (called when
11181 Main FSM allows it)
11182
11183 @param pWDICtx: pointer to the WLAN DAL context
11184 pEventData: pointer to the event information structure
11185
11186 @see
11187 @return Result of the function call
11188*/
11189WDI_Status
11190WDI_ProcessDelPeriodicTxPtrnInd
11191(
11192 WDI_ControlBlockType* pWDICtx,
11193 WDI_EventInfoType* pEventData
11194)
11195{
11196 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11197 wpt_uint8* pSendBuffer = NULL;
11198 wpt_uint16 usDataOffset = 0;
11199 wpt_uint16 usSendSize = 0;
11200 WDI_Status wdiStatus;
11201 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11202 wpt_uint8 selfStaIdx = 0;
11203
11204 /*-------------------------------------------------------------------------
11205 Sanity check
11206 -------------------------------------------------------------------------*/
11207 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11208 {
11209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11210 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11211 WDI_ASSERT(0);
11212 return WDI_STATUS_E_FAILURE;
11213 }
11214
11215 pDelPeriodicTxPtrnParams =
11216 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11217
11218 /*------------------------------------------------------------------------
11219 Get message buffer
11220 ------------------------------------------------------------------------*/
11221 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11222 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11223 &pSendBuffer, &usDataOffset, &usSendSize))||
11224 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11225 {
11226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11227 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11228 __func__);
11229 WDI_ASSERT(0);
11230 return WDI_STATUS_E_FAILURE;
11231 }
11232
11233 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11234
11235 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11236 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11237 &selfStaIdx))
11238 {
11239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11240 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011241 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011242
11243 return WDI_STATUS_E_FAILURE;
11244 }
11245
11246 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11247 halDelPeriodicTxPtrn->uPatternIdBitmap =
11248 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11249
11250 /*-------------------------------------------------------------------------
11251 Send Indication to HAL
11252 -------------------------------------------------------------------------*/
11253 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11254 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11255
11256 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11257
11258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11259 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11260
11261 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11262} /* WDI_ProcessDelPeriodicTxPtrnInd */
11263
Jeff Johnson295189b2012-06-20 16:38:30 -070011264/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011265 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011266==========================================================================*/
11267/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011268 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011269 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011270
11271 @param pWDICtx: pointer to the WLAN DAL context
11272 pEventData: pointer to the event information structure
11273
Jeff Johnson295189b2012-06-20 16:38:30 -070011274 @see
11275 @return Result of the function call
11276*/
11277WDI_Status
11278WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011279(
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 WDI_ControlBlockType* pWDICtx,
11281 WDI_EventInfoType* pEventData
11282)
11283{
11284 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11285 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011286 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011287 wpt_uint16 usDataOffset = 0;
11288 wpt_uint16 usSendSize = 0;
11289 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11291
11292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011294 -------------------------------------------------------------------------*/
11295 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11296 ( NULL == pEventData->pCBfnc ))
11297 {
11298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 }
11303
11304 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11305 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11306 /*-----------------------------------------------------------------------
11307 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011308 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011311 sizeof(halSwitchChannelReq.switchChannelParams),
11312 &pSendBuffer, &usDataOffset, &usSendSize))||
11313 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11314 {
11315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011316 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011320 }
11321
Jeff Johnsone7245742012-09-05 17:12:55 -070011322 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011323 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011324#ifndef WLAN_FEATURE_VOWIFI
11325 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11327#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011328 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011329 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11330
11331#ifdef WLAN_FEATURE_VOWIFI
11332 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011333 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011334 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11335 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11336 WDI_MAC_ADDR_LEN);
11337 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11338 pwdiSwitchChParams->wdiChInfo.macBSSId,
11339 WDI_MAC_ADDR_LEN);
11340#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011341 wpalMemoryCopy( pSendBuffer+usDataOffset,
11342 &halSwitchChannelReq.switchChannelParams,
11343 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011344
11345 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011346 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011347
11348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011349 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011350 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011351 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11352 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011353}/*WDI_ProcessChannelSwitchReq*/
11354
11355/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011356 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011357 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011358
11359 @param pWDICtx: pointer to the WLAN DAL context
11360 pEventData: pointer to the event information structure
11361
Jeff Johnson295189b2012-06-20 16:38:30 -070011362 @see
11363 @return Result of the function call
11364*/
11365WDI_Status
11366WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011367(
Jeff Johnson295189b2012-06-20 16:38:30 -070011368 WDI_ControlBlockType* pWDICtx,
11369 WDI_EventInfoType* pEventData
11370)
11371{
11372 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11373 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011374 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011375 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011376 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011377 wpt_uint16 usDataOffset = 0;
11378 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011380
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 tConfigStaReqMsg halConfigStaReqMsg;
11382 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11384
11385 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011386 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011387 -------------------------------------------------------------------------*/
11388 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11389 ( NULL == pEventData->pCBfnc ))
11390 {
11391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011395 }
11396
11397 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11398 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11399 /*-------------------------------------------------------------------------
11400 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011401 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011402 -------------------------------------------------------------------------*/
11403 wpalMutexAcquire(&pWDICtx->wptMutex);
11404
11405 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011406 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011407 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011408 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11409 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11410 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011411
Jeff Johnsone7245742012-09-05 17:12:55 -070011412 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011413 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11415 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11416 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011417
11418 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011419 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011420 }
11421
11422 /*------------------------------------------------------------------------
11423 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011424 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011425 ------------------------------------------------------------------------*/
11426 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11427 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11429 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11430 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011431
Jeff Johnsone7245742012-09-05 17:12:55 -070011432 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011433 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011435 }
11436
11437 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011438
11439 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11440#ifdef WLAN_FEATURE_11AC
11441 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011442 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 else
11444#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011445 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011446
Jeff Johnson295189b2012-06-20 16:38:30 -070011447 /*-----------------------------------------------------------------------
11448 Get message buffer
11449 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011450 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11451 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011452 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011453 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011454 {
11455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011456 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011457 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11458 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011459 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 }
11461
11462 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011463 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 &pwdiConfigSTAParams->wdiReqInfo);
11465
11466 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11467 {
11468 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011469 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011470 WDI_STATableFindStaidByAddr(pWDICtx,
11471 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011472 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 {
11474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011475 MAC_ADDRESS_STR
11476 ": This station does not exist in the WDI Station Table",
11477 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011478 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011479 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011481 }
11482 }
11483 else
11484 {
11485 /* Need to fill in the STA Index to invalid, since at this point we have not
11486 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011487 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 }
11489
11490 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011491 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011492
Jeff Johnsone7245742012-09-05 17:12:55 -070011493 wpalMemoryCopy( pSendBuffer+usDataOffset,
11494 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011495 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011496
11497 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011498 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011499
Jeff Johnsone7245742012-09-05 17:12:55 -070011500 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11501 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011502 sizeof(pWDICtx->wdiCachedConfigStaReq));
11503
11504 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011506 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11508 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011509}/*WDI_ProcessConfigStaReq*/
11510
11511
11512/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011513 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011514 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011515
11516 @param pWDICtx: pointer to the WLAN DAL context
11517 pEventData: pointer to the event information structure
11518
Jeff Johnson295189b2012-06-20 16:38:30 -070011519 @see
11520 @return Result of the function call
11521*/
11522WDI_Status
11523WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011524(
Jeff Johnson295189b2012-06-20 16:38:30 -070011525 WDI_ControlBlockType* pWDICtx,
11526 WDI_EventInfoType* pEventData
11527)
11528{
11529 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11530 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011531 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011532 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011533 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 wpt_uint16 usDataOffset = 0;
11535 wpt_uint16 usSendSize = 0;
11536 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011537 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11539
11540 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011541 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011542 -------------------------------------------------------------------------*/
11543 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11544 ( NULL == pEventData->pCBfnc ))
11545 {
11546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011547 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 }
11551
11552 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11553 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11554 /*-------------------------------------------------------------------------
11555 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011556 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011557 -------------------------------------------------------------------------*/
11558 wpalMutexAcquire(&pWDICtx->wptMutex);
11559
11560 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11564 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11565 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011566
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011568 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011570 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11571 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011572 }
11573 else
11574 {
11575 /*------------------------------------------------------------------------
11576 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011577 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011578 ------------------------------------------------------------------------*/
11579 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11580 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11582 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11583 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11584
11585 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 }
11589 }
11590 /* If the link is set to enter IDLE - the Session allocated for this BSS
11591 will be deleted on the Set Link State response coming from HAL
11592 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011593 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11595
11596 wpalMutexRelease(&pWDICtx->wptMutex);
11597 /*-----------------------------------------------------------------------
11598 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011599 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011600 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011601
11602 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 sizeof(halLinkStateReqMsg),
11604 &pSendBuffer, &usDataOffset, &usSendSize))||
11605 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11606 {
11607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011608 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011609 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 }
11613
11614 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11615 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11616
11617 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11618 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11619
Jeff Johnsone7245742012-09-05 17:12:55 -070011620 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011621 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11622
Jeff Johnsone7245742012-09-05 17:12:55 -070011623 wpalMemoryCopy( pSendBuffer+usDataOffset,
11624 &halLinkStateReqMsg,
11625 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011626
11627 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011628 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011629
11630 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011631 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011632 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011633 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11634 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011635}/*WDI_ProcessSetLinkStateReq*/
11636
11637
11638/**
11639 @brief Process Get Stats Request function (called when Main FSM
11640 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011641
11642 @param pWDICtx: pointer to the WLAN DAL context
11643 pEventData: pointer to the event information structure
11644
Jeff Johnson295189b2012-06-20 16:38:30 -070011645 @see
11646 @return Result of the function call
11647*/
11648WDI_Status
11649WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011650(
Jeff Johnson295189b2012-06-20 16:38:30 -070011651 WDI_ControlBlockType* pWDICtx,
11652 WDI_EventInfoType* pEventData
11653)
11654{
11655 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11656 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011657 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011658 wpt_uint16 usDataOffset = 0;
11659 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011660 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011661 WDI_BSSSessionType* pBSSSes = NULL;
11662 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011663 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011664 tHalStatsReqMsg halStatsReqMsg;
11665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11666
11667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011668 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011669 -------------------------------------------------------------------------*/
11670 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11671 ( NULL == pEventData->pCBfnc ) )
11672 {
11673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011674 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011677 }
11678
11679 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11680 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11681
11682 /*-------------------------------------------------------------------------
11683 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011684 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011685 -------------------------------------------------------------------------*/
11686 wpalMutexAcquire(&pWDICtx->wptMutex);
11687
11688 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011689 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011691 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11692 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 &macBSSID))
11694 {
11695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011696 "This station does not exist in the WDI Station Table %d",
11697 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011698 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011700 }
11701
Jeff Johnsone7245742012-09-05 17:12:55 -070011702 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11703 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011704 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11706 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11707 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011708
11709 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011710 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011711 }
11712
11713 /*------------------------------------------------------------------------
11714 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011715 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011716 ------------------------------------------------------------------------*/
11717 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11718 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11720 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11721 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011722
Jeff Johnsone7245742012-09-05 17:12:55 -070011723 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011724 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011725 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011726 }
11727
11728
11729 wpalMutexRelease(&pWDICtx->wptMutex);
11730
11731 /*-----------------------------------------------------------------------
11732 Get message buffer
11733 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011734 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011735 sizeof(halStatsReqMsg.statsReqParams),
11736 &pSendBuffer, &usDataOffset, &usSendSize))||
11737 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11738 {
11739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011740 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011741 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011744 }
11745
Jeff Johnsone7245742012-09-05 17:12:55 -070011746 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011747 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011748 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011749 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011750 wpalMemoryCopy( pSendBuffer+usDataOffset,
11751 &halStatsReqMsg.statsReqParams,
11752 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011753
11754 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011755 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011756
11757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011758 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011759 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011760 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11761 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011762}/*WDI_ProcessGetStatsReq*/
11763
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011764#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11765/**
11766 @brief Process Get Roam Rssi Request function (called when Main FSM
11767 allows it)
11768
11769 @param pWDICtx: pointer to the WLAN DAL context
11770 pEventData: pointer to the event information structure
11771
11772 @see
11773 @return Result of the function call
11774*/
11775WDI_Status
11776WDI_ProcessGetRoamRssiReq
11777(
11778 WDI_ControlBlockType* pWDICtx,
11779 WDI_EventInfoType* pEventData
11780)
11781{
11782 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11783 WDI_GetStatsRspCb wdiGetStatsRspCb;
11784 wpt_uint8* pSendBuffer = NULL;
11785 wpt_uint16 usDataOffset = 0;
11786 wpt_uint16 usSendSize = 0;
11787 wpt_uint8 ucCurrentBSSSesIdx = 0;
11788 WDI_BSSSessionType* pBSSSes = NULL;
11789 wpt_macAddr macBSSID;
11790 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11791 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11793 /*-------------------------------------------------------------------------
11794 Sanity check
11795 -------------------------------------------------------------------------*/
11796 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11797 ( NULL == pEventData->pCBfnc ) )
11798 {
11799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11800 "%s: Invalid parameters", __func__);
11801 WDI_ASSERT(0);
11802 return WDI_STATUS_E_FAILURE;
11803 }
11804
11805 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11806 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11807
11808 /*-------------------------------------------------------------------------
11809 Check to see if we are in the middle of an association, if so queue, if
11810 not it means it is free to process request
11811 -------------------------------------------------------------------------*/
11812 wpalMutexAcquire(&pWDICtx->wptMutex);
11813
11814 /*------------------------------------------------------------------------
11815 Find the BSS for which the request is made
11816 ------------------------------------------------------------------------*/
11817 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11818 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11819 &macBSSID))
11820 {
11821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011822 "This station does not exist in the WDI Station Table %d",
11823 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011824 wpalMutexRelease(&pWDICtx->wptMutex);
11825 return WDI_STATUS_E_FAILURE;
11826 }
11827
11828 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11829 if ( NULL == pBSSSes )
11830 {
11831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11832 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11833 __func__, MAC_ADDR_ARRAY(macBSSID));
11834
11835 wpalMutexRelease(&pWDICtx->wptMutex);
11836 return WDI_STATUS_E_NOT_ALLOWED;
11837 }
11838
11839 /*------------------------------------------------------------------------
11840 Check if this BSS is being currently processed or queued,
11841 if queued - queue the new request as well
11842 ------------------------------------------------------------------------*/
11843 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11844 {
11845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11846 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11847 __func__, MAC_ADDR_ARRAY(macBSSID));
11848
11849 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11850 wpalMutexRelease(&pWDICtx->wptMutex);
11851 return wdiStatus;
11852 }
11853
11854 wpalMutexRelease(&pWDICtx->wptMutex);
11855
11856 /*-----------------------------------------------------------------------
11857 Get message buffer
11858 -----------------------------------------------------------------------*/
11859 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11860 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11861 &pSendBuffer, &usDataOffset, &usSendSize))||
11862 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11863 {
11864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011865 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011866 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11867 WDI_ASSERT(0);
11868 return WDI_STATUS_E_FAILURE;
11869 }
11870
11871 halRssiRoamReqMsg.roamRssiReqParams.staId =
11872 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11873 wpalMemoryCopy( pSendBuffer+usDataOffset,
11874 &halRssiRoamReqMsg.roamRssiReqParams,
11875 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11876
11877 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11878 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11879
11880 /*-------------------------------------------------------------------------
11881 Send Get STA Request to HAL
11882 -------------------------------------------------------------------------*/
11883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11884 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11885}/*WDI_ProcessGetRoamRssiReq*/
11886#endif
11887
Jeff Johnson295189b2012-06-20 16:38:30 -070011888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011889 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011890 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011891
11892 @param pWDICtx: pointer to the WLAN DAL context
11893 pEventData: pointer to the event information structure
11894
Jeff Johnson295189b2012-06-20 16:38:30 -070011895 @see
11896 @return Result of the function call
11897*/
11898WDI_Status
11899WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011900(
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 WDI_ControlBlockType* pWDICtx,
11902 WDI_EventInfoType* pEventData
11903)
11904{
11905 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11906 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11907
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011909 wpt_uint16 usDataOffset = 0;
11910 wpt_uint16 usSendSize = 0;
11911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11912
11913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011914 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011915 -------------------------------------------------------------------------*/
11916 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11917 ( NULL == pEventData->pCBfnc))
11918 {
11919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011923 }
11924
11925 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11926 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11927
11928 /*-----------------------------------------------------------------------
11929 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011930 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011931 -----------------------------------------------------------------------*/
11932
Jeff Johnsone7245742012-09-05 17:12:55 -070011933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011934 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11935 &pSendBuffer, &usDataOffset, &usSendSize))||
11936 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11937 {
11938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011939 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011943 }
11944
Jeff Johnsone7245742012-09-05 17:12:55 -070011945 wpalMemoryCopy( pSendBuffer+usDataOffset,
11946 &pwdiUpdateCfgParams->uConfigBufferLen,
11947 sizeof(wpt_uint32));
11948 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11949 pwdiUpdateCfgParams->pConfigBuffer,
11950 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011951
11952 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011953 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011954
11955 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011956 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011957 -------------------------------------------------------------------------*/
11958
Jeff Johnsone7245742012-09-05 17:12:55 -070011959 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11960 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011961
11962}/*WDI_ProcessUpdateCfgReq*/
11963
11964
11965/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011966 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011967 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011968
11969 @param pWDICtx: pointer to the WLAN DAL context
11970 pEventData: pointer to the event information structure
11971
Jeff Johnson295189b2012-06-20 16:38:30 -070011972 @see
11973 @return Result of the function call
11974*/
11975WDI_Status
11976WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011977(
Jeff Johnson295189b2012-06-20 16:38:30 -070011978 WDI_ControlBlockType* pWDICtx,
11979 WDI_EventInfoType* pEventData
11980)
11981{
11982 WDI_AddBAReqParamsType* pwdiAddBAParams;
11983 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011984 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011985 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011986 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 wpt_uint16 usDataOffset = 0;
11988 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011989 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011990 wpt_macAddr macBSSID;
11991
11992 tAddBAReqMsg halAddBAReq;
11993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11994
11995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011997 -------------------------------------------------------------------------*/
11998 if (( NULL == pEventData ) ||
11999 ( NULL == pEventData->pEventData) ||
12000 ( NULL == pEventData->pCBfnc ))
12001 {
12002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012006 }
12007
12008 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12009 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12010
12011 /*-------------------------------------------------------------------------
12012 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 -------------------------------------------------------------------------*/
12015 wpalMutexAcquire(&pWDICtx->wptMutex);
12016
12017 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012018 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012019 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12021 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012022 &macBSSID))
12023 {
12024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012025 "This station does not exist in the WDI Station Table %d",
12026 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012027 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012029 }
12030
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12032 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12035 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12036 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012037
12038 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012039 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012040 }
12041
12042 /*------------------------------------------------------------------------
12043 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012044 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012045 ------------------------------------------------------------------------*/
12046 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12047 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12049 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12050 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012051
Jeff Johnsone7245742012-09-05 17:12:55 -070012052 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012053 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012055 }
12056
12057
12058 wpalMutexRelease(&pWDICtx->wptMutex);
12059 /*-----------------------------------------------------------------------
12060 Get message buffer
12061 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 sizeof(halAddBAReq.addBAParams),
12064 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012065 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12067 {
12068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012069 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012070 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12071 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
Jeff Johnsone7245742012-09-05 17:12:55 -070012075 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012076 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12077 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12078#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012079 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12081#endif
12082
Jeff Johnsone7245742012-09-05 17:12:55 -070012083 wpalMemoryCopy( pSendBuffer+usDataOffset,
12084 &halAddBAReq.addBAParams,
12085 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012086
12087 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012088 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012089
12090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012091 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012092 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012093 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12094 wdiAddBARspCb, pEventData->pUserData,
12095 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012096}/*WDI_ProcessAddBAReq*/
12097
12098
12099
12100/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012102 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012103
12104 @param pWDICtx: pointer to the WLAN DAL context
12105 pEventData: pointer to the event information structure
12106
Jeff Johnson295189b2012-06-20 16:38:30 -070012107 @see
12108 @return Result of the function call
12109*/
12110WDI_Status
12111WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012112(
Jeff Johnson295189b2012-06-20 16:38:30 -070012113 WDI_ControlBlockType* pWDICtx,
12114 WDI_EventInfoType* pEventData
12115)
12116{
12117 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12118 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012119 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012120 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012121 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012122 wpt_uint16 usDataOffset = 0;
12123 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012124 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012125 wpt_uint16 index;
12126 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012127
Jeff Johnson295189b2012-06-20 16:38:30 -070012128 tTriggerBAReqMsg halTriggerBAReq;
12129 tTriggerBaReqCandidate* halTriggerBACandidate;
12130 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12132
12133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012134 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012135 -------------------------------------------------------------------------*/
12136 if (( NULL == pEventData ) ||
12137 ( NULL == pEventData->pEventData ) ||
12138 ( NULL == pEventData->pCBfnc ))
12139 {
12140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012141 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012144 }
12145
12146 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12147 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12148 /*-------------------------------------------------------------------------
12149 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012150 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012151 -------------------------------------------------------------------------*/
12152 wpalMutexAcquire(&pWDICtx->wptMutex);
12153
12154 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012157 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12158 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012159 &macBSSID))
12160 {
12161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012162 "This station does not exist in the WDI Station Table %d",
12163 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012164 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 }
12167
Jeff Johnsone7245742012-09-05 17:12:55 -070012168 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12169 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012170 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12172 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12173 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012174
12175 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012176 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 }
12178
12179 /*------------------------------------------------------------------------
12180 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 ------------------------------------------------------------------------*/
12183 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12184 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12186 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12187 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012188
Jeff Johnsone7245742012-09-05 17:12:55 -070012189 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012190 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012191 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012192 }
12193
12194
12195 wpalMutexRelease(&pWDICtx->wptMutex);
12196 /*-----------------------------------------------------------------------
12197 Get message buffer
12198 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012199 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12200 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012202 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012203 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12204 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012205 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012206 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12209 {
12210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012211 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012212 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012215 }
12216
Jeff Johnsone7245742012-09-05 17:12:55 -070012217 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012218 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012219 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012220 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12221
Jeff Johnsone7245742012-09-05 17:12:55 -070012222 wpalMemoryCopy( pSendBuffer+usDataOffset,
12223 &halTriggerBAReq.triggerBAParams,
12224 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012225
Jeff Johnsone7245742012-09-05 17:12:55 -070012226 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012227 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12228 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12229 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012230
12231 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012232 index++)
12233 {
12234 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12235 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12236 halTriggerBACandidate++;
12237 wdiTriggerBACandidate++;
12238 }
12239
12240 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012241 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012242
12243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012244 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012245 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012246 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12247 wdiTriggerBARspCb, pEventData->pUserData,
12248 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012249}/*WDI_ProcessTriggerBAReq*/
12250
12251
12252
12253/**
12254 @brief Process Update Beacon Params Request function (called when Main FSM
12255 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012256
12257 @param pWDICtx: pointer to the WLAN DAL context
12258 pEventData: pointer to the event information structure
12259
Jeff Johnson295189b2012-06-20 16:38:30 -070012260 @see
12261 @return Result of the function call
12262*/
12263WDI_Status
12264WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012265(
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 WDI_ControlBlockType* pWDICtx,
12267 WDI_EventInfoType* pEventData
12268)
12269{
12270 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12271 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012272 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 wpt_uint16 usDataOffset = 0;
12274 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12277
12278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012280 -------------------------------------------------------------------------*/
12281 if (( NULL == pEventData ) ||
12282 ( NULL == pEventData->pEventData) ||
12283 ( NULL == pEventData->pCBfnc))
12284 {
12285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012286 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 }
12290
12291 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12292 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12293 /*-----------------------------------------------------------------------
12294 Get message buffer
12295 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012296 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012297 sizeof(halUpdateBeaconParams),
12298 &pSendBuffer, &usDataOffset, &usSendSize))||
12299 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12300 {
12301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012302 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012303 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 }
12307
12308 /*BSS Index of the BSS*/
12309 halUpdateBeaconParams.bssIdx =
12310 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12311 /*shortPreamble mode. HAL should update all the STA rates when it
12312 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012313 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012314 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12315 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12318 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12321
12322 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012325 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012326 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012327 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012328 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012331 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012333 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012334 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12335 halUpdateBeaconParams.fRIFSMode =
12336 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012337 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12339
Jeff Johnsone7245742012-09-05 17:12:55 -070012340 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12341 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012342
12343 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012344 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012345
12346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12350 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012351}/*WDI_ProcessUpdateBeaconParamsReq*/
12352
12353
12354
12355/**
12356 @brief Process Send Beacon template Request function (called when Main FSM
12357 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012358
12359 @param pWDICtx: pointer to the WLAN DAL context
12360 pEventData: pointer to the event information structure
12361
Jeff Johnson295189b2012-06-20 16:38:30 -070012362 @see
12363 @return Result of the function call
12364*/
12365WDI_Status
12366WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012367(
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 WDI_ControlBlockType* pWDICtx,
12369 WDI_EventInfoType* pEventData
12370)
12371{
12372 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12373 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012374 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012375 wpt_uint16 usDataOffset = 0;
12376 wpt_uint16 usSendSize = 0;
12377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12378
12379 tSendBeaconReqMsg halSendBeaconReq;
12380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012382 -------------------------------------------------------------------------*/
12383 if (( NULL == pEventData ) ||
12384 ( NULL == pEventData->pEventData ) ||
12385 ( NULL == pEventData->pCBfnc ))
12386 {
12387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012388 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 }
12392
12393 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12394 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12395 /*-----------------------------------------------------------------------
12396 Get message buffer
12397 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012398 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012399 sizeof(halSendBeaconReq.sendBeaconParam),
12400 &pSendBuffer, &usDataOffset, &usSendSize))||
12401 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12402 {
12403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012404 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012405 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 }
12409
12410 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12411 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12412 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012413 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012414 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12415 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12416 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12417 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012418 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012419 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012420 /* usP2PIeOffset should be atleast greater than timIeOffset */
12421 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12422 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12423 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12424 {
12425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12426 "Invalid usP2PIeOffset %hu",
12427 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12428 WDI_ASSERT(0);
12429 return WDI_STATUS_E_FAILURE;
12430 }
12431
Jeff Johnsone7245742012-09-05 17:12:55 -070012432 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012433 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012434
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 wpalMemoryCopy( pSendBuffer+usDataOffset,
12436 &halSendBeaconReq.sendBeaconParam,
12437 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012438
12439 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012440 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012441
12442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012444 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012445 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12446 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012447}/*WDI_ProcessSendBeaconParamsReq*/
12448
12449/**
12450 @brief Process Update Beacon Params Request function (called when Main FSM
12451 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012452
12453 @param pWDICtx: pointer to the WLAN DAL context
12454 pEventData: pointer to the event information structure
12455
Jeff Johnson295189b2012-06-20 16:38:30 -070012456 @see
12457 @return Result of the function call
12458*/
12459WDI_Status
12460WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012461(
Jeff Johnson295189b2012-06-20 16:38:30 -070012462 WDI_ControlBlockType* pWDICtx,
12463 WDI_EventInfoType* pEventData
12464)
12465{
12466 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12467 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012468 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012469 wpt_uint16 usDataOffset = 0;
12470 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012471 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12473
12474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012475 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012476 -------------------------------------------------------------------------*/
12477 if (( NULL == pEventData ) ||
12478 ( NULL == pEventData->pEventData) ||
12479 ( NULL == pEventData->pCBfnc))
12480 {
12481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012485 }
12486
Jeff Johnsone7245742012-09-05 17:12:55 -070012487 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012488 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012489 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012490 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12491 /*-----------------------------------------------------------------------
12492 Get message buffer
12493 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012494 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012495 sizeof(halUpdateProbeRspTmplParams),
12496 &pSendBuffer, &usDataOffset, &usSendSize))||
12497 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12498 {
12499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012500 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012501 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 }
12505
12506 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012507 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012508 WDI_MAC_ADDR_LEN);
12509
Jeff Johnsone7245742012-09-05 17:12:55 -070012510 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012511 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12512
12513 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12514 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012515 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012516
12517
12518 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12519 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12520 WDI_PROBE_REQ_BITMAP_IE_LEN);
12521
Jeff Johnsone7245742012-09-05 17:12:55 -070012522 wpalMemoryCopy( pSendBuffer+usDataOffset,
12523 &halUpdateProbeRspTmplParams,
12524 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012525
12526 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012527 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012528
12529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012532 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12533 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12534 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012535}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12536
12537/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012538 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012540
12541 @param pWDICtx: pointer to the WLAN DAL context
12542 pEventData: pointer to the event information structure
12543
Jeff Johnson295189b2012-06-20 16:38:30 -070012544 @see
12545 @return Result of the function call
12546*/
12547WDI_Status
12548WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012549(
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 WDI_ControlBlockType* pWDICtx,
12551 WDI_EventInfoType* pEventData
12552)
12553{
12554
12555 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12556 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12557
12558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 -------------------------------------------------------------------------*/
12561 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12566 {
12567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012568 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012571 }
12572
12573 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012574 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12576
12577 /*cache the wdi nv request message here if the the first fragment
12578 * To issue the request to HAL for the next fragment */
12579 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12580 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012581 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12582 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012583 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12584
12585 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12586 pWDICtx->pRspCBUserData = pEventData->pUserData;
12587 }
12588
12589 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12590}
12591
12592/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012593 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012595
12596 @param pWDICtx: pointer to the WLAN DAL context
12597 pEventData: pointer to the event information structure
12598
Jeff Johnson295189b2012-06-20 16:38:30 -070012599 @see
12600 @return Result of the function call
12601*/
12602WDI_Status WDI_ProcessSetMaxTxPowerReq
12603(
12604 WDI_ControlBlockType* pWDICtx,
12605 WDI_EventInfoType* pEventData
12606)
12607{
12608 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12609 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012610 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 wpt_uint16 usDataOffset = 0;
12612 wpt_uint16 usSendSize = 0;
12613 tSetMaxTxPwrReq halSetMaxTxPower;
12614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12615
12616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 -------------------------------------------------------------------------*/
12619 if (( NULL == pEventData ) ||
12620 ( NULL == pEventData->pEventData ) ||
12621 ( NULL == pEventData->pCBfnc ))
12622 {
12623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012627 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012630 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12632
12633 /*-----------------------------------------------------------------------
12634 Get message buffer
12635 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012636if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012637 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12638 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012639 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012640)))
12641 {
12642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012643 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012647 }
12648
12649 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12650 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12651 WDI_MAC_ADDR_LEN);
12652
12653 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12654 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12655 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012656 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012657 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012658
12659 wpalMemoryCopy( pSendBuffer+usDataOffset,
12660 &halSetMaxTxPower.setMaxTxPwrParams,
12661 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012662
12663 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012665
12666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012667 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012668 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012669 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12670 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12671 WDI_SET_MAX_TX_POWER_RESP);
12672
Jeff Johnson295189b2012-06-20 16:38:30 -070012673}
12674
Arif Hussainfc753992013-08-09 15:09:58 -070012675/*
12676 @brief Process Set Max Tx Power Per Band Request function (called when Main
12677 FSM allows it)
12678
12679 @param pWDICtx: pointer to the WLAN DAL context
12680 pEventData: pointer to the event information structure
12681
12682 @see
12683 @return Result of the function call
12684*/
12685WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
12686(
12687 WDI_ControlBlockType* pWDICtx,
12688 WDI_EventInfoType* pEventData
12689)
12690{
12691 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
12692 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
12693 wpt_uint8* pSendBuffer = NULL;
12694 wpt_uint16 usDataOffset = 0;
12695 wpt_uint16 usSendSize = 0;
12696 tpSetMaxTxPwrPerBandReq phalSetMxTxPwrPerBand = NULL;
12697 WDI_Status rValue = WDI_STATUS_SUCCESS;
12698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12699
12700 /*-------------------------------------------------------------------------
12701 Sanity check
12702 -------------------------------------------------------------------------*/
12703 if (( NULL == pEventData ) ||
12704 ( NULL == pEventData->pEventData ) ||
12705 ( NULL == pEventData->pCBfnc ))
12706 {
12707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12708 "%s: Invalid parameters", __func__);
12709 WDI_ASSERT(0);
12710 return WDI_STATUS_E_FAILURE;
12711 }
12712 pwdiSetMaxTxPowerPerBandParams = \
12713 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
12714
12715 wdiSetMaxTxPowerPerBandRspCb = \
12716 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
12717
12718 /*-----------------------------------------------------------------------
12719 Get message buffer
12720 -----------------------------------------------------------------------*/
12721
12722 rValue = WDI_GetMessageBuffer(pWDICtx,
12723 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
12724 sizeof(tSetMaxTxPwrPerBandParams),
12725 &pSendBuffer, &usDataOffset, &usSendSize);
12726
12727 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
12728 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
12729 {
12730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12731 "Unable to get Set Max Tx Power Per Band req %p %p %p",
12732 pEventData, pwdiSetMaxTxPowerPerBandParams,
12733 wdiSetMaxTxPowerPerBandRspCb);
12734 WDI_ASSERT(0);
12735 return WDI_STATUS_E_FAILURE;
12736 }
12737
12738
12739 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandReq)(pSendBuffer + usDataOffset);
12740 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.bandInfo = \
12741 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
12742
12743 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.power = \
12744 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
12745
12746 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
12747 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
12748
12749 /*-------------------------------------------------------------------------
12750 Send Set Max Tx Power Per Band Request to HAL
12751 -------------------------------------------------------------------------*/
12752 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
12753 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
12754 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
12755}
12756
schangd82195a2013-03-13 18:41:24 -070012757/**
12758 @brief Process Set Tx Power Request function (called when Main
12759 FSM allows it)
12760
12761 @param pWDICtx: pointer to the WLAN DAL context
12762 pEventData: pointer to the event information structure
12763
12764 @see
12765 @return Result of the function call
12766*/
12767WDI_Status WDI_ProcessSetTxPowerReq
12768(
12769 WDI_ControlBlockType* pWDICtx,
12770 WDI_EventInfoType* pEventData
12771)
12772{
12773 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12774 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12775 wpt_uint8* pSendBuffer = NULL;
12776 wpt_uint16 usDataOffset = 0;
12777 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012778 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12780
12781 /*-------------------------------------------------------------------------
12782 Sanity check
12783 -------------------------------------------------------------------------*/
12784 if (( NULL == pEventData ) ||
12785 ( NULL == pEventData->pEventData ) ||
12786 ( NULL == pEventData->pCBfnc ))
12787 {
12788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12789 "%s: Invalid parameters", __func__);
12790 WDI_ASSERT(0);
12791 return WDI_STATUS_E_FAILURE;
12792 }
12793
12794 pwdiSetTxPowerParams =
12795 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12796 wdiSetTxPowerRspCb =
12797 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12798
12799 /*-----------------------------------------------------------------------
12800 Get message buffer
12801 -----------------------------------------------------------------------*/
12802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12803 sizeof(tSetTxPwrReqParams),
12804 &pSendBuffer, &usDataOffset, &usSendSize))||
12805 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12806 )))
12807 {
12808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012809 "Unable to get Set Max Tx Power req %p %p %p",
schangd82195a2013-03-13 18:41:24 -070012810 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12811 WDI_ASSERT(0);
12812 return WDI_STATUS_E_FAILURE;
12813 }
12814
Leo Changa37e2a92013-03-25 17:39:58 -070012815 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12816 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12817 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012818
12819 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12820 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12821
12822 /*-------------------------------------------------------------------------
12823 Send Set Tx Power Request to HAL
12824 -------------------------------------------------------------------------*/
12825 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12826 wdiSetTxPowerRspCb, pEventData->pUserData,
12827 WDI_SET_TX_POWER_RESP);
12828}
Jeff Johnson295189b2012-06-20 16:38:30 -070012829
12830/**
12831 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12832 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012833
12834 @param pWDICtx: pointer to the WLAN DAL context
12835 pEventData: pointer to the event information structure
12836
Jeff Johnson295189b2012-06-20 16:38:30 -070012837 @see
12838 @return Result of the function call
12839*/
12840WDI_Status
12841WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012842(
Jeff Johnson295189b2012-06-20 16:38:30 -070012843 WDI_ControlBlockType* pWDICtx,
12844 WDI_EventInfoType* pEventData
12845)
12846{
12847 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12848 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012849 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012850 wpt_uint16 usDataOffset = 0;
12851 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012852 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12854
12855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012856 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 -------------------------------------------------------------------------*/
12858 if (( NULL == pEventData ) ||
12859 ( NULL == pEventData->pEventData) ||
12860 ( NULL == pEventData->pCBfnc))
12861 {
12862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012863 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012866 }
12867
Jeff Johnsone7245742012-09-05 17:12:55 -070012868 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012869 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012870 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012871 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12872 /*-----------------------------------------------------------------------
12873 Get message buffer
12874 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012875 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12876 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 sizeof(halSetP2PGONOAParams),
12878 &pSendBuffer, &usDataOffset, &usSendSize))||
12879 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12880 {
12881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012882 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012883 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 }
12887
Jeff Johnsone7245742012-09-05 17:12:55 -070012888 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012890 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012891 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12892 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012893 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012894 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012895 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012896 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012897 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012898 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12901
Jeff Johnsone7245742012-09-05 17:12:55 -070012902 wpalMemoryCopy( pSendBuffer+usDataOffset,
12903 &halSetP2PGONOAParams,
12904 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012905
12906 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012908
12909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012910 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012911 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12913 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12914 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012915}/*WDI_ProcessP2PGONOAReq*/
12916
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012917#ifdef FEATURE_WLAN_TDLS
12918
12919/**
12920 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12921 allows it)
12922
12923 @param pWDICtx: pointer to the WLAN DAL context
12924 pEventData: pointer to the event information structure
12925
12926 @see
12927 @return Result of the function call
12928*/
12929WDI_Status
12930WDI_ProcessTdlsLinkEstablishReq
12931(
12932 WDI_ControlBlockType* pWDICtx,
12933 WDI_EventInfoType* pEventData
12934)
12935{
12936 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12937 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12938 wpt_uint8* pSendBuffer = NULL;
12939 wpt_uint16 usDataOffset = 0;
12940 wpt_uint16 usSendSize = 0;
12941
12942 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12944
12945 /*-------------------------------------------------------------------------
12946 Sanity check
12947 -------------------------------------------------------------------------*/
12948 if (( NULL == pEventData ) ||
12949 ( NULL == pEventData->pEventData) ||
12950 ( NULL == pEventData->pCBfnc))
12951 {
12952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12953 "%s: Invalid parameters", __func__);
12954 WDI_ASSERT(0);
12955 return WDI_STATUS_E_FAILURE;
12956 }
12957 pwdiTDLSLinkEstablishReqParams =
12958 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12959 wdiTDLSLinkEstablishReqRspCb =
12960 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12961
12962
12963 /*-----------------------------------------------------------------------
12964 Get message buffer
12965 -----------------------------------------------------------------------*/
12966 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12967 WDI_TDLS_LINK_ESTABLISH_REQ,
12968 sizeof(halSetTDLSLinkEstablishParams),
12969 &pSendBuffer, &usDataOffset, &usSendSize))||
12970 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12971 {
12972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012973 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012974 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12975 WDI_ASSERT(0);
12976 return WDI_STATUS_E_FAILURE;
12977 }
12978
12979 halSetTDLSLinkEstablishParams.staIdx =
12980 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12981 halSetTDLSLinkEstablishParams.bIsResponder =
12982 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12983 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12984 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12985 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12986 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12987 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12988 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12989 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12990 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12991 halSetTDLSLinkEstablishParams.aAck = 0;
12992 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12993 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12994 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12995
12996 wpalMemoryCopy( pSendBuffer+usDataOffset,
12997 &halSetTDLSLinkEstablishParams,
12998 sizeof(halSetTDLSLinkEstablishParams));
12999
13000 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13001 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13002
13003 /*-------------------------------------------------------------------------
13004 Send Update Probe Resp Template Request to HAL
13005 -------------------------------------------------------------------------*/
13006 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13007 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13008 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13009 return 0;
13010}/*WDI_ProcessTdlsLinkEstablishReq*/
13011
13012
13013#endif
13014
Jeff Johnson295189b2012-06-20 16:38:30 -070013015
13016
13017/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013018 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013019 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 @param None
13021
13022 @see
13023 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013024*/
13025void
13026WDI_SetPowerStateCb
13027(
13028 wpt_status status,
13029 unsigned int dxePhyAddr,
13030 void *pContext
13031)
13032{
13033 wpt_status wptStatus;
13034 WDI_ControlBlockType *pCB = NULL;
13035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
13036 if(eWLAN_PAL_STATUS_E_FAILURE == status )
13037 {
13038 //it shouldn't happen, put an error msg
13039 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013040 /*
13041 * Trigger the event to bring the Enter BMPS req function to come
13042 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013043*/
13044 if( NULL != pContext )
13045 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 }
13048 else
13049 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013050 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013051 pCB = &gWDICb;
13052 }
13053 pCB->dxePhyAddr = dxePhyAddr;
13054 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13055 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13056 {
13057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13058 "Failed to set an event");
13059
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 }
13062 return;
13063}
13064
13065
13066/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013069
13070 @param pWDICtx: pointer to the WLAN DAL context
13071 pEventData: pointer to the event information structure
13072
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 @see
13074 @return Result of the function call
13075*/
13076WDI_Status
13077WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013078(
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 WDI_ControlBlockType* pWDICtx,
13080 WDI_EventInfoType* pEventData
13081)
13082{
Jeff Johnson43971f52012-07-17 12:26:56 -070013083 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013084 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 wpt_uint16 usDataOffset = 0;
13087 wpt_uint16 usSendSize = 0;
13088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13089
13090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013091 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013092 -------------------------------------------------------------------------*/
13093 if (( NULL == pEventData ) ||
13094 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
13095 {
13096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013097 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013098 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013099 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 }
13101
13102 /*-----------------------------------------------------------------------
13103 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013104 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 0,
13108 &pSendBuffer, &usDataOffset, &usSendSize))||
13109 ( usSendSize < (usDataOffset )))
13110 {
13111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013112 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013113 pEventData, wdiEnterImpsRspCb);
13114 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013115 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 }
13117
13118 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013119 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13120 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013121 {
13122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13123 "WDI Init failed to reset an event");
13124
Jeff Johnsone7245742012-09-05 17:12:55 -070013125 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013126 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 }
13128
13129 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013130 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13131 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080013133 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013134 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013135 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013136 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013137
13138 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013141 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13142 WDI_SET_POWER_STATE_TIMEOUT);
13143 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 {
13145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13146 "WDI Init failed to wait on an event");
13147
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013149 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013150 }
13151
13152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013153 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13156 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013157
13158fail:
13159 // Release the message buffer so we don't leak
13160 wpalMemoryFree(pSendBuffer);
13161
13162failRequest:
13163 //WDA should have failure check to avoid the memory leak
13164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013165}/*WDI_ProcessEnterImpsReq*/
13166
13167/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013168 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013169 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013170
13171 @param pWDICtx: pointer to the WLAN DAL context
13172 pEventData: pointer to the event information structure
13173
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 @see
13175 @return Result of the function call
13176*/
13177WDI_Status
13178WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013179(
Jeff Johnson295189b2012-06-20 16:38:30 -070013180 WDI_ControlBlockType* pWDICtx,
13181 WDI_EventInfoType* pEventData
13182)
13183{
13184 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 wpt_uint16 usDataOffset = 0;
13187 wpt_uint16 usSendSize = 0;
13188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13189
13190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013191 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013192 -------------------------------------------------------------------------*/
13193 if (( NULL == pEventData ) ||
13194 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13195 {
13196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013197 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013200 }
13201
13202 /*-----------------------------------------------------------------------
13203 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013206 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013207 0,
13208 &pSendBuffer, &usDataOffset, &usSendSize))||
13209 ( usSendSize < (usDataOffset )))
13210 {
13211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013212 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013213 pEventData, wdiExitImpsRspCb);
13214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 }
13217
13218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013221 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13222 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013223}/*WDI_ProcessExitImpsReq*/
13224
13225/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013226 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013227 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013228
13229 @param pWDICtx: pointer to the WLAN DAL context
13230 pEventData: pointer to the event information structure
13231
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 @see
13233 @return Result of the function call
13234*/
13235WDI_Status
13236WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013237(
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 WDI_ControlBlockType* pWDICtx,
13239 WDI_EventInfoType* pEventData
13240)
13241{
13242 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13243 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 wpt_uint16 usDataOffset = 0;
13246 wpt_uint16 usSendSize = 0;
13247 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013248 wpt_status wptStatus;
13249
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13251
13252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013254 -------------------------------------------------------------------------*/
13255 if (( NULL == pEventData ) ||
13256 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13257 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13258 {
13259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013262 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013263 }
13264
13265 /*-----------------------------------------------------------------------
13266 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013267 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013269 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 sizeof(enterBmpsReq),
13271 &pSendBuffer, &usDataOffset, &usSendSize))||
13272 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13273 {
13274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013275 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013276 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13277 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013278 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 }
13280
13281 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013282 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13283 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013284 {
13285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13286 "WDI Init failed to reset an event");
13287
Jeff Johnsone7245742012-09-05 17:12:55 -070013288 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013289 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013290 }
13291
13292 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013293 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13294 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13295 {
13296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080013297 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013298 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013299 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013300 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013301
13302/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013303 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013304 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013305 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13306 WDI_SET_POWER_STATE_TIMEOUT);
13307 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 {
13309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13310 "WDI Init failed to wait on an event");
13311
Jeff Johnsone7245742012-09-05 17:12:55 -070013312 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013313 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 }
13315
13316 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13317
13318 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13319 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13320 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13321 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13322
13323 // For CCX and 11R Roaming
13324 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13325 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13326 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13327
13328 wpalMemoryCopy( pSendBuffer+usDataOffset,
13329 &enterBmpsReq,
13330 sizeof(enterBmpsReq));
13331
13332 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013334
13335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013336 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013337 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13339 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013340
13341fail:
13342 // Release the message buffer so we don't leak
13343 wpalMemoryFree(pSendBuffer);
13344
13345failRequest:
13346 //WDA should have failure check to avoid the memory leak
13347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013348}/*WDI_ProcessEnterBmpsReq*/
13349
13350/**
13351 @brief Process Exit BMPS Request function (called when Main FSM
13352 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013353
13354 @param pWDICtx: pointer to the WLAN DAL context
13355 pEventData: pointer to the event information structure
13356
Jeff Johnson295189b2012-06-20 16:38:30 -070013357 @see
13358 @return Result of the function call
13359*/
13360WDI_Status
13361WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013362(
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 WDI_ControlBlockType* pWDICtx,
13364 WDI_EventInfoType* pEventData
13365)
13366{
13367 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13368 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 wpt_uint16 usDataOffset = 0;
13371 wpt_uint16 usSendSize = 0;
13372 tHalExitBmpsReqParams exitBmpsReq;
13373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13374
13375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 -------------------------------------------------------------------------*/
13378 if (( NULL == pEventData ) ||
13379 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13380 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13381 {
13382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013383 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 }
13387
13388 /*-----------------------------------------------------------------------
13389 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013390 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013391 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013392 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 sizeof(exitBmpsReq),
13394 &pSendBuffer, &usDataOffset, &usSendSize))||
13395 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13396 {
13397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013398 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013399 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013402 }
13403 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13404
Jeff Johnsone7245742012-09-05 17:12:55 -070013405 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13406
Jeff Johnson295189b2012-06-20 16:38:30 -070013407 wpalMemoryCopy( pSendBuffer+usDataOffset,
13408 &exitBmpsReq,
13409 sizeof(exitBmpsReq));
13410
13411 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013412 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013413
13414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013417 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13418 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013419}/*WDI_ProcessExitBmpsReq*/
13420
13421/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013422 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013424
13425 @param pWDICtx: pointer to the WLAN DAL context
13426 pEventData: pointer to the event information structure
13427
Jeff Johnson295189b2012-06-20 16:38:30 -070013428 @see
13429 @return Result of the function call
13430*/
13431WDI_Status
13432WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013433(
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 WDI_ControlBlockType* pWDICtx,
13435 WDI_EventInfoType* pEventData
13436)
13437{
13438 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13439 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013440 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013441 wpt_uint16 usDataOffset = 0;
13442 wpt_uint16 usSendSize = 0;
13443 tUapsdReqParams enterUapsdReq;
13444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13445
13446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013448 -------------------------------------------------------------------------*/
13449 if (( NULL == pEventData ) ||
13450 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13451 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13452 {
13453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013457 }
13458
13459 /*-----------------------------------------------------------------------
13460 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013461 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013462 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013463 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 sizeof(enterUapsdReq),
13465 &pSendBuffer, &usDataOffset, &usSendSize))||
13466 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13467 {
13468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013469 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13471 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013472 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013473 }
13474
13475 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13476 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13477 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13478 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13479 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13480 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13481 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13482 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013484
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 wpalMemoryCopy( pSendBuffer+usDataOffset,
13486 &enterUapsdReq,
13487 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013488
13489 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013491
13492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013493 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013494 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013495 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13496 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013497}/*WDI_ProcessEnterUapsdReq*/
13498
13499/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013501 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013502
13503 @param pWDICtx: pointer to the WLAN DAL context
13504 pEventData: pointer to the event information structure
13505
Jeff Johnson295189b2012-06-20 16:38:30 -070013506 @see
13507 @return Result of the function call
13508*/
13509WDI_Status
13510WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013511(
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 WDI_ControlBlockType* pWDICtx,
13513 WDI_EventInfoType* pEventData
13514)
13515{
13516 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013517 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 wpt_uint16 usDataOffset = 0;
13519 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013520 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13521 wpt_uint8 bssIdx = 0;
13522
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13524
13525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013526 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 -------------------------------------------------------------------------*/
13528 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013529 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13531 {
13532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013536 }
13537
13538 /*-----------------------------------------------------------------------
13539 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013540 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013542 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013543 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013545 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013546 {
13547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013548 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013549 pEventData, wdiExitUapsdRspCb);
13550 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 }
13553
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013554 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13555
13556 wpalMemoryCopy( pSendBuffer+usDataOffset,
13557 &bssIdx,
13558 sizeof(wpt_uint8));
13559
13560 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13561 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13562
Jeff Johnson295189b2012-06-20 16:38:30 -070013563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013564 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013566 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13567 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013568}/*WDI_ProcessExitUapsdReq*/
13569
13570/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013571 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013572 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013573
13574 @param pWDICtx: pointer to the WLAN DAL context
13575 pEventData: pointer to the event information structure
13576
Jeff Johnson295189b2012-06-20 16:38:30 -070013577 @see
13578 @return Result of the function call
13579*/
13580WDI_Status
13581WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013582(
Jeff Johnson295189b2012-06-20 16:38:30 -070013583 WDI_ControlBlockType* pWDICtx,
13584 WDI_EventInfoType* pEventData
13585)
13586{
13587 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13588 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013589 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013590 wpt_uint16 usDataOffset = 0;
13591 wpt_uint16 usSendSize = 0;
13592 tUapsdInfo uapsdAcParamsReq;
13593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13594
13595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013596 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013597 -------------------------------------------------------------------------*/
13598 if (( NULL == pEventData ) ||
13599 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13600 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13601 {
13602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013606 }
13607
13608 /*-----------------------------------------------------------------------
13609 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013610 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013611 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013612 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 sizeof(uapsdAcParamsReq),
13614 &pSendBuffer, &usDataOffset, &usSendSize))||
13615 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13616 {
13617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013618 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 }
13623
13624 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13625 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13626 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13627 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13628 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13629 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13630
Jeff Johnsone7245742012-09-05 17:12:55 -070013631 wpalMemoryCopy( pSendBuffer+usDataOffset,
13632 &uapsdAcParamsReq,
13633 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013634
13635 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013636 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013637
13638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013639 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013641 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13642 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013643}/*WDI_ProcessSetUapsdAcParamsReq*/
13644
13645/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013648
13649 @param pWDICtx: pointer to the WLAN DAL context
13650 pEventData: pointer to the event information structure
13651
Jeff Johnson295189b2012-06-20 16:38:30 -070013652 @see
13653 @return Result of the function call
13654*/
13655WDI_Status
13656WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013657(
Jeff Johnson295189b2012-06-20 16:38:30 -070013658 WDI_ControlBlockType* pWDICtx,
13659 WDI_EventInfoType* pEventData
13660)
13661{
13662 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13663 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013664 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 wpt_uint16 usDataOffset = 0;
13666 wpt_uint16 usSendSize = 0;
13667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13668
13669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013671 -------------------------------------------------------------------------*/
13672 if (( NULL == pEventData ) ||
13673 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13674 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13675 {
13676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013680 }
13681
13682 /*-----------------------------------------------------------------------
13683 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013684 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13688 &pSendBuffer, &usDataOffset, &usSendSize))||
13689 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13690 {
13691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013692 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013693 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 }
13697
Jeff Johnsone7245742012-09-05 17:12:55 -070013698 wpalMemoryCopy( pSendBuffer+usDataOffset,
13699 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13700 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013701
13702 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013703 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013704
13705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013706 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013707 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13709 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013710}/*WDI_ProcessUpdateUapsdParamsReq*/
13711
13712/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013715
13716 @param pWDICtx: pointer to the WLAN DAL context
13717 pEventData: pointer to the event information structure
13718
Jeff Johnson295189b2012-06-20 16:38:30 -070013719 @see
13720 @return Result of the function call
13721*/
13722WDI_Status
13723WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013724(
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 WDI_ControlBlockType* pWDICtx,
13726 WDI_EventInfoType* pEventData
13727)
13728{
13729 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13730 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013731 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013732 wpt_uint16 usDataOffset = 0;
13733 wpt_uint16 usSendSize = 0;
13734 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13735
13736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13737
13738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 -------------------------------------------------------------------------*/
13741 if (( NULL == pEventData ) ||
13742 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13743 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13744 {
13745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013746 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013749 }
13750
13751 /*-----------------------------------------------------------------------
13752 Get message buffer
13753 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013755 sizeof(halRxpFilterParams),
13756 &pSendBuffer, &usDataOffset, &usSendSize))||
13757 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13758 {
13759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013760 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 }
13765
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13770
Jeff Johnsone7245742012-09-05 17:12:55 -070013771 wpalMemoryCopy( pSendBuffer+usDataOffset,
13772 &halRxpFilterParams,
13773 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013774
13775 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013776 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013777
13778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013779 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013780 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013781 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13782 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013783}/*WDI_ProcessConfigureRxpFilterReq*/
13784
13785/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013786 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013787 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013788
13789 @param pWDICtx: pointer to the WLAN DAL context
13790 pEventData: pointer to the event information structure
13791
Jeff Johnson295189b2012-06-20 16:38:30 -070013792 @see
13793 @return Result of the function call
13794*/
13795WDI_Status
13796WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013797(
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 WDI_ControlBlockType* pWDICtx,
13799 WDI_EventInfoType* pEventData
13800)
13801{
13802 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13803 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013804 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013805 wpt_uint16 usDataOffset = 0;
13806 wpt_uint16 usSendSize = 0;
13807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13808
13809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013811 -------------------------------------------------------------------------*/
13812 if (( NULL == pEventData ) ||
13813 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13814 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13815 {
13816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 }
13821
13822 /*-----------------------------------------------------------------------
13823 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013826 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13828 &pSendBuffer, &usDataOffset, &usSendSize))||
13829 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13830 {
13831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013832 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013833 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13834 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013835 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013836 }
13837
Jeff Johnsone7245742012-09-05 17:12:55 -070013838 wpalMemoryCopy( pSendBuffer+usDataOffset,
13839 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13840 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13841 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13842 &pwdiBeaconFilterParams->aFilters[0],
13843 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013844
13845 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013846 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013847
13848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013849 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013851 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13852 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013853}/*WDI_ProcessSetBeaconFilterReq*/
13854
13855/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013856 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013857 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013858
13859 @param pWDICtx: pointer to the WLAN DAL context
13860 pEventData: pointer to the event information structure
13861
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 @see
13863 @return Result of the function call
13864*/
13865WDI_Status
13866WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013867(
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 WDI_ControlBlockType* pWDICtx,
13869 WDI_EventInfoType* pEventData
13870)
13871{
13872 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13873 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013874 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 wpt_uint16 usDataOffset = 0;
13876 wpt_uint16 usSendSize = 0;
13877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13878
13879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 -------------------------------------------------------------------------*/
13882 if (( NULL == pEventData ) ||
13883 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13884 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13885 {
13886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013887 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 }
13891
13892 /*-----------------------------------------------------------------------
13893 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013894 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013895 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013896 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13898 &pSendBuffer, &usDataOffset, &usSendSize))||
13899 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13900 {
13901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013902 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013903 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013906 }
13907
Jeff Johnsone7245742012-09-05 17:12:55 -070013908 wpalMemoryCopy( pSendBuffer+usDataOffset,
13909 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13910 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013911
13912 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013913 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013914
13915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013916 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013917 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13919 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013920}
13921
13922/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013923 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013924 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013925
13926 @param pWDICtx: pointer to the WLAN DAL context
13927 pEventData: pointer to the event information structure
13928
Jeff Johnson295189b2012-06-20 16:38:30 -070013929 @see
13930 @return Result of the function call
13931*/
13932WDI_Status
13933WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013934(
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 WDI_ControlBlockType* pWDICtx,
13936 WDI_EventInfoType* pEventData
13937)
13938{
13939 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13940 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013941 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013942 wpt_uint16 usDataOffset = 0;
13943 wpt_uint16 usSendSize = 0;
13944 tHalRSSIThresholds rssiThresholdsReq;
13945 WDI_Status ret_status = 0;
13946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13947
13948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013950 -------------------------------------------------------------------------*/
13951 if (( NULL == pEventData ) ||
13952 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13953 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13954 {
13955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013959 }
13960
13961 /*-----------------------------------------------------------------------
13962 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 sizeof(rssiThresholdsReq),
13967 &pSendBuffer, &usDataOffset, &usSendSize))||
13968 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13969 {
13970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013971 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 }
13976
Jeff Johnsone7245742012-09-05 17:12:55 -070013977 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013979 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013983 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013991 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013995 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013996 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13997
Jeff Johnsone7245742012-09-05 17:12:55 -070013998 wpalMemoryCopy( pSendBuffer+usDataOffset,
13999 &rssiThresholdsReq,
14000 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014001
14002 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014004
14005 /*-------------------------------------------------------------------------
14006 Send Set threshold req to HAL
14007 -------------------------------------------------------------------------*/
14008 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14009 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14010 {
14011 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14012 // req. Then as a result of processing the threshold cross ind, we trigger
14013 // a Set threshold req, then we need to indicate to WDI that it needs to
14014 // go to busy state as a result of the indication as we sent a req in the
14015 // same WDI context.
14016 // Hence expected state transition is to busy.
14017 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14018 }
14019
14020 return ret_status;
14021}
14022
14023/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014024 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014026
14027 @param pWDICtx: pointer to the WLAN DAL context
14028 pEventData: pointer to the event information structure
14029
Jeff Johnson295189b2012-06-20 16:38:30 -070014030 @see
14031 @return Result of the function call
14032*/
14033WDI_Status
14034WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014035(
Jeff Johnson295189b2012-06-20 16:38:30 -070014036 WDI_ControlBlockType* pWDICtx,
14037 WDI_EventInfoType* pEventData
14038)
14039{
14040 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14041 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014042 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 wpt_uint16 usDataOffset = 0;
14044 wpt_uint16 usSendSize = 0;
14045 tHalHostOffloadReq hostOffloadParams;
14046 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014047 wpt_uint8 ucCurrentBSSSesIdx = 0;
14048 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014049
14050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14051
14052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 -------------------------------------------------------------------------*/
14055 if (( NULL == pEventData ) ||
14056 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14057 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14058 {
14059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014062 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014063 }
14064
14065 /*-----------------------------------------------------------------------
14066 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014067 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014068 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014069 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14071 &pSendBuffer, &usDataOffset, &usSendSize))||
14072 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14073 {
14074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014075 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014076 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14077 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014078 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 }
14080
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014081 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14082 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14083 &pBSSSes);
14084 if ( NULL == pBSSSes )
14085 {
14086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053014087 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14088 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014089 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014090 }
14091
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14093 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014094
Jeff Johnson295189b2012-06-20 16:38:30 -070014095 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14096 {
14097 // ARP Offload
14098 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14099 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14100 4);
14101 }
14102 else
14103 {
14104 // NS Offload
14105 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14106 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14107 16);
14108
14109#ifdef WLAN_NS_OFFLOAD
14110 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14111 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14112 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14113 16);
14114 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14115 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14116 16);
14117 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14118 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14119 16);
14120 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14121 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14122 16);
14123 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14124 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14125 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053014126 nsOffloadParams.srcIPv6AddrValid =
14127 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14128
14129 nsOffloadParams.targetIPv6Addr1Valid =
14130 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14131
14132 nsOffloadParams.targetIPv6Addr2Valid =
14133 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14134
14135 nsOffloadParams.slotIndex =
14136 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014137
Jeff Johnson295189b2012-06-20 16:38:30 -070014138#endif // WLAN_NS_OFFLOAD
14139 }
14140
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014141 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14142
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 // copy hostOffloadParams into pSendBuffer
14144 wpalMemoryCopy( pSendBuffer+usDataOffset,
14145 &hostOffloadParams,
14146 sizeof(hostOffloadParams));
14147
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014148 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014150 // copy nsOffloadParams into pSendBuffer
14151 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014152 &nsOffloadParams,
14153 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014154 }
14155 else
14156 {
14157#ifdef WLAN_NS_OFFLOAD
14158 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14159 {
14160 // copy nsOffloadParams into pSendBuffer
14161 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14162 &nsOffloadParams,
14163 sizeof(nsOffloadParams));
14164 }
14165#endif
14166 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014167
14168 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014169 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014170
14171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014172 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014173 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014174 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14175 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014176
14177fail:
14178 // Release the message buffer so we don't leak
14179 wpalMemoryFree(pSendBuffer);
14180
14181failRequest:
14182 //WDA should have failure check to avoid the memory leak
14183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014184}/*WDI_ProcessHostOffloadReq*/
14185
14186/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014187 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014189
14190 @param pWDICtx: pointer to the WLAN DAL context
14191 pEventData: pointer to the event information structure
14192
Jeff Johnson295189b2012-06-20 16:38:30 -070014193 @see
14194 @return Result of the function call
14195*/
14196WDI_Status
14197WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014198(
Jeff Johnson295189b2012-06-20 16:38:30 -070014199 WDI_ControlBlockType* pWDICtx,
14200 WDI_EventInfoType* pEventData
14201)
14202{
14203 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14204 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014205 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014206 wpt_uint16 usDataOffset = 0;
14207 wpt_uint16 usSendSize = 0;
14208 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014209 wpt_uint8 ucCurrentBSSSesIdx = 0;
14210 WDI_BSSSessionType* pBSSSes = NULL;
14211
Jeff Johnson295189b2012-06-20 16:38:30 -070014212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14213
14214 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014215 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014216 -------------------------------------------------------------------------*/
14217 if (( NULL == pEventData ) ||
14218 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14219 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14220 {
14221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14222 "Invalid parameters in Keep Alive req");
14223 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014224 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014225 }
14226
14227 /*-----------------------------------------------------------------------
14228 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014229 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 sizeof(keepAliveReq),
14233 &pSendBuffer, &usDataOffset, &usSendSize))||
14234 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14235 {
14236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014237 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14239 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014240 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 }
14242
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014243 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14244 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14245 &pBSSSes);
14246 if ( NULL == pBSSSes )
14247 {
14248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014249 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014250 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014251 }
14252
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14254 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14255
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014256 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014257
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14259 {
14260 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14261 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14262 HAL_IPV4_ADDR_LEN);
14263 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14264 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014265 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 wpalMemoryCopy(keepAliveReq.destMacAddr,
14267 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14268 HAL_MAC_ADDR_LEN);
14269 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014270
14271 wpalMemoryCopy( pSendBuffer+usDataOffset,
14272 &keepAliveReq,
14273 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014274
14275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson27c67c82013-11-22 16:44:20 -080014276 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014277
14278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson27c67c82013-11-22 16:44:20 -080014279 "Process keep alive req time period %d",
14280 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014281
14282 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014283 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014284
14285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14286 "Sending keep alive req to HAL");
14287
14288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014289 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014291 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14292 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014293
14294fail:
14295 // Release the message buffer so we don't leak
14296 wpalMemoryFree(pSendBuffer);
14297
14298failRequest:
14299 //WDA should have failure check to avoid the memory leak
14300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014301}/*WDI_ProcessKeepAliveReq*/
14302
14303
14304/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014305 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014307
14308 @param pWDICtx: pointer to the WLAN DAL context
14309 pEventData: pointer to the event information structure
14310
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 @see
14312 @return Result of the function call
14313*/
14314WDI_Status
14315WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014316(
Jeff Johnson295189b2012-06-20 16:38:30 -070014317 WDI_ControlBlockType* pWDICtx,
14318 WDI_EventInfoType* pEventData
14319)
14320{
14321 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14322 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 wpt_uint16 usDataOffset = 0;
14325 wpt_uint16 usSendSize = 0;
14326 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014327 wpt_uint8 ucCurrentBSSSesIdx = 0;
14328 WDI_BSSSessionType* pBSSSes = NULL;
14329
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14331
14332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014333 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014334 -------------------------------------------------------------------------*/
14335 if (( NULL == pEventData ) ||
14336 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14337 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14338 {
14339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014340 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014341 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014342 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 }
14344
14345 /*-----------------------------------------------------------------------
14346 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014347 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014348 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014349 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 sizeof(wowlAddBcPtrnReq),
14351 &pSendBuffer, &usDataOffset, &usSendSize))||
14352 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14353 {
14354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014355 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14357 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014358 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 }
14360
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014361 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14362 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14363 &pBSSSes);
14364 if ( NULL == pBSSSes )
14365 {
14366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014367 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014368 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014369 }
14370
Jeff Johnsone7245742012-09-05 17:12:55 -070014371 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014372 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014373 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014374 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014375 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014376 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014377 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014378 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14379
14380 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14381 {
14382 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14383 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14384 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14385 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14386 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14387 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14388 }
14389 else
14390 {
14391 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14392 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14393 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14394 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14395 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14396 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14397
14398 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14399 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14400 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14401 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14402 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14403 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14404 }
14405
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014406 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14407
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 wpalMemoryCopy( pSendBuffer+usDataOffset,
14409 &wowlAddBcPtrnReq,
14410 sizeof(wowlAddBcPtrnReq));
14411
14412 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014414
14415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14419 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014420fail:
14421 // Release the message buffer so we don't leak
14422 wpalMemoryFree(pSendBuffer);
14423
14424failRequest:
14425 //WDA should have failure check to avoid the memory leak
14426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014427}/*WDI_ProcessWowlAddBcPtrnReq*/
14428
14429/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014430 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014431 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014432
14433 @param pWDICtx: pointer to the WLAN DAL context
14434 pEventData: pointer to the event information structure
14435
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 @see
14437 @return Result of the function call
14438*/
14439WDI_Status
14440WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014441(
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 WDI_ControlBlockType* pWDICtx,
14443 WDI_EventInfoType* pEventData
14444)
14445{
14446 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14447 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014448 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 wpt_uint16 usDataOffset = 0;
14450 wpt_uint16 usSendSize = 0;
14451 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014452 wpt_uint8 ucCurrentBSSSesIdx = 0;
14453 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14455
14456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 -------------------------------------------------------------------------*/
14459 if (( NULL == pEventData ) ||
14460 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14461 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14462 {
14463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014466 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 }
14468
14469 /*-----------------------------------------------------------------------
14470 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 sizeof(wowlDelBcPtrnReq),
14475 &pSendBuffer, &usDataOffset, &usSendSize))||
14476 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14477 {
14478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014479 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14481 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014482 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014483 }
14484
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014485 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14486 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14487 &pBSSSes);
14488 if ( NULL == pBSSSes )
14489 {
14490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014491 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014492 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014493 }
14494
Jeff Johnsone7245742012-09-05 17:12:55 -070014495 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014496 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014497
14498 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14499
Jeff Johnsone7245742012-09-05 17:12:55 -070014500 wpalMemoryCopy( pSendBuffer+usDataOffset,
14501 &wowlDelBcPtrnReq,
14502 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014503
14504 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014505 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014506
14507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014508 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014509 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014510 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14511 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014512
14513fail:
14514 // Release the message buffer so we don't leak
14515 wpalMemoryFree(pSendBuffer);
14516
14517failRequest:
14518 //WDA should have failure check to avoid the memory leak
14519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014520}/*WDI_ProcessWowlDelBcPtrnReq*/
14521
14522/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014523 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014524 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014525
14526 @param pWDICtx: pointer to the WLAN DAL context
14527 pEventData: pointer to the event information structure
14528
Jeff Johnson295189b2012-06-20 16:38:30 -070014529 @see
14530 @return Result of the function call
14531*/
14532WDI_Status
14533WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014534(
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 WDI_ControlBlockType* pWDICtx,
14536 WDI_EventInfoType* pEventData
14537)
14538{
14539 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14540 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014541 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014542 wpt_uint16 usDataOffset = 0;
14543 wpt_uint16 usSendSize = 0;
14544 tHalWowlEnterParams wowlEnterReq;
14545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14546
14547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014548 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014549 -------------------------------------------------------------------------*/
14550 if (( NULL == pEventData ) ||
14551 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14552 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14553 {
14554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014555 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 }
14559
14560 /*-----------------------------------------------------------------------
14561 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014562 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014563 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014564 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 sizeof(wowlEnterReq),
14566 &pSendBuffer, &usDataOffset, &usSendSize))||
14567 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14568 {
14569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014570 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 }
14575
Kumar Anand21a26022013-07-22 14:35:34 -070014576 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14577
Jeff Johnsone7245742012-09-05 17:12:55 -070014578 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014580 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014586 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014591 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14594
14595#ifdef WLAN_WAKEUP_EVENTS
14596 wowlEnterReq.ucWoWEAPIDRequestEnable =
14597 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14598
14599 wowlEnterReq.ucWoWEAPOL4WayEnable =
14600 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14601
14602 wowlEnterReq.ucWowNetScanOffloadMatch =
14603 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14604
14605 wowlEnterReq.ucWowGTKRekeyError =
14606 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14607
14608 wowlEnterReq.ucWoWBSSConnLoss =
14609 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14610#endif // WLAN_WAKEUP_EVENTS
14611
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014612 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14613
Jeff Johnson295189b2012-06-20 16:38:30 -070014614 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14615 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14616 sizeof(tSirMacAddr));
14617
Jeff Johnsone7245742012-09-05 17:12:55 -070014618 wpalMemoryCopy( pSendBuffer+usDataOffset,
14619 &wowlEnterReq,
14620 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014621
14622 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014623 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014624
14625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014626 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14629 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014630}/*WDI_ProcessWowlEnterReq*/
14631
14632/**
14633 @brief Process Wowl exit Request function (called when Main FSM
14634 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014635
14636 @param pWDICtx: pointer to the WLAN DAL context
14637 pEventData: pointer to the event information structure
14638
Jeff Johnson295189b2012-06-20 16:38:30 -070014639 @see
14640 @return Result of the function call
14641*/
14642WDI_Status
14643WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014644(
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 WDI_ControlBlockType* pWDICtx,
14646 WDI_EventInfoType* pEventData
14647)
14648{
14649 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014650 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014651 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014652 wpt_uint16 usDataOffset = 0;
14653 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014654 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14656
14657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014658 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 -------------------------------------------------------------------------*/
14660 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014661 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014662 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14663 {
14664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 }
14669
14670 /*-----------------------------------------------------------------------
14671 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014672 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014673 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014675 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014677 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014678 {
14679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014680 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 pEventData, wdiWowlExitCb);
14682 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 }
14685
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014686 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14687
14688 wpalMemoryCopy( pSendBuffer+usDataOffset,
14689 &wowlExitparams,
14690 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14695 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014696}/*WDI_ProcessWowlExitReq*/
14697
14698/**
14699 @brief Process Configure Apps Cpu Wakeup State Request function
14700 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014701
14702 @param pWDICtx: pointer to the WLAN DAL context
14703 pEventData: pointer to the event information structure
14704
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 @see
14706 @return Result of the function call
14707*/
14708WDI_Status
14709WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014710(
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 WDI_ControlBlockType* pWDICtx,
14712 WDI_EventInfoType* pEventData
14713)
14714{
14715 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14716 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 wpt_uint16 usDataOffset = 0;
14719 wpt_uint16 usSendSize = 0;
14720 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14722
14723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 -------------------------------------------------------------------------*/
14726 if (( NULL == pEventData ) ||
14727 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14728 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14729 {
14730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 }
14735
14736 /*-----------------------------------------------------------------------
14737 Get message buffer
14738 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 sizeof(halCfgAppsCpuWakeupStateReqParams),
14741 &pSendBuffer, &usDataOffset, &usSendSize))||
14742 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14743 {
14744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014745 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 }
14750
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14753
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 wpalMemoryCopy( pSendBuffer+usDataOffset,
14755 &halCfgAppsCpuWakeupStateReqParams,
14756 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014757
14758 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014759 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014760
14761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14765 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14766 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014767}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14768
14769#ifdef WLAN_FEATURE_VOWIFI_11R
14770/**
14771 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14772 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014773
14774 @param pWDICtx: pointer to the WLAN DAL context
14775 pEventData: pointer to the event information structure
14776
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 @see
14778 @return Result of the function call
14779*/
14780WDI_Status
14781WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014782(
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 WDI_ControlBlockType* pWDICtx,
14784 WDI_EventInfoType* pEventData
14785)
14786{
14787 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14788 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014789 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014790 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014791 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 wpt_uint16 usDataOffset = 0;
14793 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 wpt_macAddr macBSSID;
14796 tAggrAddTsReq halAggrAddTsReq;
14797 int i;
14798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14799
14800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014802 -------------------------------------------------------------------------*/
14803 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14804 ( NULL == pEventData->pCBfnc ))
14805 {
14806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 }
14811 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14812 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14813 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14814 /*-------------------------------------------------------------------------
14815 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014816 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 -------------------------------------------------------------------------*/
14818 wpalMutexAcquire(&pWDICtx->wptMutex);
14819
14820 /*------------------------------------------------------------------------
14821 Find the BSS for which the request is made and identify WDI session
14822 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014823 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14824 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 &macBSSID))
14826 {
14827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014828 "This station does not exist in the WDI Station Table %d",
14829 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070014830 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014832 }
14833
Jeff Johnsone7245742012-09-05 17:12:55 -070014834 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14835 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014836 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14838 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14839 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014840
14841 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014843 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014844
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 /*------------------------------------------------------------------------
14846 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014847 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 ------------------------------------------------------------------------*/
14849 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14850 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14852 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14853 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014854
Jeff Johnsone7245742012-09-05 17:12:55 -070014855 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014856 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014857 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 }
14859
14860 wpalMutexRelease(&pWDICtx->wptMutex);
14861 /*-----------------------------------------------------------------------
14862 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014865 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 sizeof(tAggrAddTsParams),
14867 &pSendBuffer, &usDataOffset, &usSendSize))||
14868 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14869 {
14870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014871 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 }
14876
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014878 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14881
14882 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14883 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14890 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014891 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014892 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14893 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14896 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14899 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14902 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14905 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14908 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14911 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014912 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014914 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014916
14917
14918 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014922 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014924 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014928 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014929 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014936 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014942 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14948 }
14949
Jeff Johnsone7245742012-09-05 17:12:55 -070014950 wpalMemoryCopy( pSendBuffer+usDataOffset,
14951 &halAggrAddTsReq,
14952 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014953
14954 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014955 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014956
14957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014958 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014959 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014960 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014961 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014962 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014963}/*WDI_ProcessAggrAddTSpecReq*/
14964#endif /* WLAN_FEATURE_VOWIFI_11R */
14965
14966/**
14967 @brief Process Shutdown Request function (called when Main FSM
14968 allows it)
14969
14970 @param pWDICtx: pointer to the WLAN DAL context
14971 pEventData: pointer to the event information structure
14972
14973 @see
14974 @return Result of the function call
14975*/
14976WDI_Status
14977WDI_ProcessShutdownReq
14978(
14979 WDI_ControlBlockType* pWDICtx,
14980 WDI_EventInfoType* pEventData
14981 )
14982{
14983 wpt_status wptStatus;
14984
14985
14986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14987
14988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 -------------------------------------------------------------------------*/
14991 if ( NULL == pEventData )
14992 {
14993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014995 WDI_ASSERT(0);
14996 return WDI_STATUS_E_FAILURE;
14997 }
14998
14999 wpalMutexAcquire(&pWDICtx->wptMutex);
15000
15001
15002 gWDIInitialized = eWLAN_PAL_FALSE;
15003 /*! TO DO: stop the data services */
15004 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15005 {
15006 /*Stop the STA Table !UT- check this logic again
15007 It is safer to do it here than on the response - because a stop is imminent*/
15008 WDI_STATableStop(pWDICtx);
15009
15010 /* Stop Transport Driver, DXE */
15011 WDTS_Stop(pWDICtx);
15012 }
15013
15014 /*Clear all pending request*/
15015 WDI_ClearPendingRequests(pWDICtx);
15016 /* Close Data transport*/
15017 /* FTM mode does not open Data Path */
15018 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15019 {
15020 WDTS_Close(pWDICtx);
15021 }
15022 /*Close the STA Table !UT- check this logic again*/
15023 WDI_STATableClose(pWDICtx);
15024 /*close the PAL */
15025 wptStatus = wpalClose(pWDICtx->pPALContext);
15026 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15027 {
15028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15029 "Failed to wpal Close %d", wptStatus);
15030 WDI_ASSERT(0);
15031 }
15032
15033 /*Transition back to init state*/
15034 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15035
15036 wpalMutexRelease(&pWDICtx->wptMutex);
15037
15038 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015040
15041
Jeff Johnsone7245742012-09-05 17:12:55 -070015042 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015043}/*WDI_ProcessShutdownReq*/
15044
15045/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015046 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015047========================================================================*/
15048
15049/**
15050 @brief Process Start Response function (called when a response
15051 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015052
15053 @param pWDICtx: pointer to the WLAN DAL context
15054 pEventData: pointer to the event information structure
15055
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 @see
15057 @return Result of the function call
15058*/
15059WDI_Status
15060WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015061(
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 WDI_ControlBlockType* pWDICtx,
15063 WDI_EventInfoType* pEventData
15064)
15065{
15066 WDI_StartRspParamsType wdiRspParams;
15067 WDI_StartRspCb wdiStartRspCb = NULL;
15068
15069 tHalMacStartRspParams* startRspParams;
15070
15071#ifndef HAL_SELF_STA_PER_BSS
15072 WDI_AddStaParams wdiAddSTAParam = {0};
15073#endif
15074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15075
Jeff Johnsone7245742012-09-05 17:12:55 -070015076 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 -------------------------------------------------------------------------*/
15080 if (( NULL == pEventData ) ||
15081 ( NULL == pEventData->pEventData) ||
15082 ( NULL == wdiStartRspCb ))
15083 {
15084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 }
15089
15090 /*-------------------------------------------------------------------------
15091 Extract response and send it to UMAC
15092 -------------------------------------------------------------------------*/
15093 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15094 {
15095 // not enough data was received
15096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson27c67c82013-11-22 16:44:20 -080015097 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015098 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015101 }
15102
15103 /*-------------------------------------------------------------------------
15104 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015105 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015106 -------------------------------------------------------------------------*/
15107 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15108
15109 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15110 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15111 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15112 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15113 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15114 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15115 wdiRspParams.wlanReportedVersion.major =
15116 startRspParams->wcnssWlanVersion.major;
15117 wdiRspParams.wlanReportedVersion.minor =
15118 startRspParams->wcnssWlanVersion.minor;
15119 wdiRspParams.wlanReportedVersion.version =
15120 startRspParams->wcnssWlanVersion.version;
15121 wdiRspParams.wlanReportedVersion.revision =
15122 startRspParams->wcnssWlanVersion.revision;
15123 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15124 startRspParams->wcnssCrmVersionString,
15125 sizeof(wdiRspParams.wcnssSoftwareVersion));
15126 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15127 startRspParams->wcnssWlanVersionString,
15128 sizeof(wdiRspParams.wcnssHardwareVersion));
15129 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15130
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015131 /*Save the HAL Version*/
15132 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15133
Jeff Johnson295189b2012-06-20 16:38:30 -070015134 wpalMutexAcquire(&pWDICtx->wptMutex);
15135 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15136 {
15137 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15138
15139 /*Cache the start response for further use*/
15140 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015141 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015142 sizeof(pWDICtx->wdiCachedStartRspParams));
15143
15144 }
15145 else
15146 {
15147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15148 "Failed to start device with status %s(%d)",
15149 WDI_getHALStatusMsgString(startRspParams->status),
15150 startRspParams->status);
15151
15152 /*Set the expected state transition to stopped - because the start has
15153 failed*/
15154 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15155
15156 wpalMutexRelease(&pWDICtx->wptMutex);
15157
15158 /*Notify UMAC*/
15159 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015160
Jeff Johnson295189b2012-06-20 16:38:30 -070015161 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15162
15163 /*Although the response is an error - it was processed by our function
15164 so as far as the caller is concerned this is a succesful reponse processing*/
15165 return WDI_STATUS_SUCCESS;
15166 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015167
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 wpalMutexRelease(&pWDICtx->wptMutex);
15169
15170 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15171 {
15172 /* FTM mode does not need to execute below */
15173 /* Notify UMAC */
15174 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15175 return WDI_STATUS_SUCCESS;
15176 }
15177
15178 /* START the Data transport */
15179 WDTS_startTransport(pWDICtx);
15180
15181 /*Start the STA Table !- check this logic again*/
15182 WDI_STATableStart(pWDICtx);
15183
15184#ifndef HAL_SELF_STA_PER_BSS
15185 /* Store the Self STA Index */
15186 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15187
15188 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15189 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15190 WDI_MAC_ADDR_LEN);
15191
15192 /* At this point add the self-STA */
15193
15194 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15195 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15196 /*! TO DO: wdiAddSTAParam.dpuSig */
15197 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15198 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15199 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15200
15201 //all DPU indices are the same for self STA
15202 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15203 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015204 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15206 WDI_MAC_ADDR_LEN);
15207 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15208 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15209
15210 /* Note: Since we don't get an explicit config STA request for self STA, we
15211 add the self STA upon receiving the Start response message. But the
15212 self STA entry in the table is deleted when WDI gets an explicit delete STA
15213 request */
15214 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15215#endif
15216
15217 /*Notify UMAC*/
15218 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15219
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015221}/*WDI_ProcessStartRsp*/
15222
15223
15224/**
15225 @brief Process Stop Response function (called when a response
15226 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015227
15228 @param pWDICtx: pointer to the WLAN DAL context
15229 pEventData: pointer to the event information structure
15230
Jeff Johnson295189b2012-06-20 16:38:30 -070015231 @see
15232 @return Result of the function call
15233*/
15234WDI_Status
15235WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015236(
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 WDI_ControlBlockType* pWDICtx,
15238 WDI_EventInfoType* pEventData
15239)
15240{
15241 WDI_Status wdiStatus;
15242 WDI_StopRspCb wdiStopRspCb = NULL;
15243
Jeff Johnsone7245742012-09-05 17:12:55 -070015244 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15246
Jeff Johnsone7245742012-09-05 17:12:55 -070015247 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 -------------------------------------------------------------------------*/
15251 if (( NULL == pEventData ) ||
15252 ( NULL == pEventData->pEventData) ||
15253 ( NULL == wdiStopRspCb ))
15254 {
15255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 }
15260
15261 /*-------------------------------------------------------------------------
15262 Extract response and send it to UMAC
15263 -------------------------------------------------------------------------*/
15264 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15265 {
15266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080015267 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015268 pEventData->uEventDataSize);
15269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 }
15272
15273 /*-------------------------------------------------------------------------
15274 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015275 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15278 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 sizeof(halMacStopRspMsg.stopRspParams));
15280
Jeff Johnsone7245742012-09-05 17:12:55 -070015281 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015282
15283 wpalMutexAcquire(&pWDICtx->wptMutex);
15284
15285 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015286 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015287 --------------------------------------------------------------------------*/
15288 if ( WDI_STATUS_SUCCESS != wdiStatus )
15289 {
15290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15291 "Failed to stop the device with status %s (%d)",
15292 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15293 halMacStopRspMsg.stopRspParams.status);
15294
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15296
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015299 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015300
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15302
15303 /*Transition now as WDI may get preempted imediately after it sends
15304 up the Stop Response and it will not get to process the state transition
15305 from Main Rsp function*/
15306 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15307 wpalMutexRelease(&pWDICtx->wptMutex);
15308
15309 /*! TO DO: - STOP the Data transport */
15310
15311 /*Notify UMAC*/
15312 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15313
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015315}/*WDI_ProcessStopRsp*/
15316
15317/**
15318 @brief Process Close Rsp function (called when a response
15319 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015320
15321 @param pWDICtx: pointer to the WLAN DAL context
15322 pEventData: pointer to the event information structure
15323
Jeff Johnson295189b2012-06-20 16:38:30 -070015324 @see
15325 @return Result of the function call
15326*/
15327WDI_Status
15328WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015329(
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 WDI_ControlBlockType* pWDICtx,
15331 WDI_EventInfoType* pEventData
15332)
15333{
15334 /*There is no close response comming from HAL - function just kept for
15335 simmetry */
15336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015337 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015338}/*WDI_ProcessCloseRsp*/
15339
15340
15341/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015342 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015343============================================================================*/
15344
15345/**
15346 @brief Process Init Scan Rsp function (called when a response
15347 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015348
15349 @param pWDICtx: pointer to the WLAN DAL context
15350 pEventData: pointer to the event information structure
15351
Jeff Johnson295189b2012-06-20 16:38:30 -070015352 @see
15353 @return Result of the function call
15354*/
15355WDI_Status
15356WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015357(
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 WDI_ControlBlockType* pWDICtx,
15359 WDI_EventInfoType* pEventData
15360)
15361{
15362 WDI_Status wdiStatus;
15363 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015365 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15367
15368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 -------------------------------------------------------------------------*/
15371 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15372 ( NULL == pEventData->pEventData))
15373 {
15374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015378 }
15379
15380 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15381 if( NULL == wdiInitScanRspCb)
15382 {
15383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015384 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 }
15388
15389 /*-------------------------------------------------------------------------
15390 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015392 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015393 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15394 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 sizeof(halInitScanRspMsg.initScanRspParams));
15396
Jeff Johnsone7245742012-09-05 17:12:55 -070015397 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015398
15399 if ( pWDICtx->bInBmps )
15400 {
15401 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015402 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15403 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080015405 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015406 WDI_ASSERT(0);
15407 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015408 }
15409
15410 /*Notify UMAC*/
15411 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15412
Jeff Johnsone7245742012-09-05 17:12:55 -070015413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015414}/*WDI_ProcessInitScanRsp*/
15415
15416
15417/**
15418 @brief Process Start Scan Rsp function (called when a response
15419 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015420
15421 @param pWDICtx: pointer to the WLAN DAL context
15422 pEventData: pointer to the event information structure
15423
Jeff Johnson295189b2012-06-20 16:38:30 -070015424 @see
15425 @return Result of the function call
15426*/
15427WDI_Status
15428WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015429(
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 WDI_ControlBlockType* pWDICtx,
15431 WDI_EventInfoType* pEventData
15432)
15433{
15434 WDI_StartScanRspParamsType wdiStartScanParams;
15435 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015436
15437 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15439
15440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015442 -------------------------------------------------------------------------*/
15443 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15444 ( NULL == pEventData->pEventData))
15445 {
15446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015450 }
15451
15452 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15453 if( NULL == wdiStartScanRspCb)
15454 {
15455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015456 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015459 }
15460
15461 /*-------------------------------------------------------------------------
15462 Extract response and send it to UMAC
15463 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015464 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15465 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015466 sizeof(halStartScanRspMsg.startScanRspParams));
15467
15468 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15469 halStartScanRspMsg.startScanRspParams.status);
15470#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015471 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015472 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015473 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015474 halStartScanRspMsg.startScanRspParams.startTSF,
15475 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015476#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015477
15478 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15479 {
15480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15481 "Start scan failed with status %s (%d)",
15482 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15483 halStartScanRspMsg.startScanRspParams.status);
15484 /* send the status to UMAC, don't return from here*/
15485 }
15486
15487 /*Notify UMAC*/
15488 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15489
Jeff Johnsone7245742012-09-05 17:12:55 -070015490 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015491
15492}/*WDI_ProcessStartScanRsp*/
15493
15494
15495/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015497 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015498
15499 @param pWDICtx: pointer to the WLAN DAL context
15500 pEventData: pointer to the event information structure
15501
Jeff Johnson295189b2012-06-20 16:38:30 -070015502 @see
15503 @return Result of the function call
15504*/
15505WDI_Status
15506WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015507(
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 WDI_ControlBlockType* pWDICtx,
15509 WDI_EventInfoType* pEventData
15510)
15511{
15512 WDI_Status wdiStatus;
15513 tHalEndScanRspMsg halEndScanRspMsg;
15514 WDI_EndScanRspCb wdiEndScanRspCb;
15515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15516
15517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 -------------------------------------------------------------------------*/
15520 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15521 ( NULL == pEventData->pEventData))
15522 {
15523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 }
15528
15529 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15530
15531 /*-------------------------------------------------------------------------
15532 Extract response and send it to UMAC
15533 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015534 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15535 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 sizeof(halEndScanRspMsg.endScanRspParams));
15537
Jeff Johnsone7245742012-09-05 17:12:55 -070015538 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015539
15540 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15541 {
15542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15543 "End Scan failed with status %s (%d )",
15544 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15545 halEndScanRspMsg.endScanRspParams.status);
15546 /* send the status to UMAC, don't return from here*/
15547 }
15548
15549 /*Notify UMAC*/
15550 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15551
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015553}/*WDI_ProcessEndScanRsp*/
15554
15555
15556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015557 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015558 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015559
15560 @param pWDICtx: pointer to the WLAN DAL context
15561 pEventData: pointer to the event information structure
15562
Jeff Johnson295189b2012-06-20 16:38:30 -070015563 @see
15564 @return Result of the function call
15565*/
15566WDI_Status
15567WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015568(
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 WDI_ControlBlockType* pWDICtx,
15570 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015571)
Jeff Johnson295189b2012-06-20 16:38:30 -070015572{
15573 WDI_Status wdiStatus;
15574 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015575
15576 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15578
15579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015581 -------------------------------------------------------------------------*/
15582 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15583 ( NULL == pEventData->pEventData))
15584 {
15585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015589 }
15590
15591 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15592
15593 /*-------------------------------------------------------------------------
15594 Extract response and send it to UMAC
15595 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15597 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15599
Jeff Johnsone7245742012-09-05 17:12:55 -070015600 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015601
15602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015603 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015604 halFinishScanRspMsg.finishScanRspParams.status);
15605
15606 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15607 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15608 {
15609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15610 "Finish Scan failed with status %s (%d)",
15611 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15612 halFinishScanRspMsg.finishScanRspParams.status);
15613 /* send the status to UMAC, don't return from here*/
15614 }
15615
15616 /*Notify UMAC*/
15617 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15618
Jeff Johnsone7245742012-09-05 17:12:55 -070015619 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015620}/*WDI_ProcessFinishScanRsp*/
15621
15622/**
15623 @brief Process Join Response function (called when a response
15624 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015625
15626 @param pWDICtx: pointer to the WLAN DAL context
15627 pEventData: pointer to the event information structure
15628
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 @see
15630 @return Result of the function call
15631*/
15632WDI_Status
15633WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015634(
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 WDI_ControlBlockType* pWDICtx,
15636 WDI_EventInfoType* pEventData
15637)
15638{
15639 WDI_Status wdiStatus;
15640 WDI_JoinRspCb wdiJoinRspCb;
15641 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015642
15643 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15645
15646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 -------------------------------------------------------------------------*/
15649 if (( NULL == pWDICtx ) ||
15650 ( NULL == pWDICtx->pfncRspCB ) ||
15651 ( NULL == pEventData ) ||
15652 ( NULL == pEventData->pEventData))
15653 {
15654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 }
15659
15660 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15661
15662 /*-------------------------------------------------------------------------
15663 Extract response and send it to UMAC
15664 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015665 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15666 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 sizeof(halJoinRspMsg.joinRspParams));
15668
Jeff Johnsone7245742012-09-05 17:12:55 -070015669 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015670
15671 wpalMutexAcquire(&pWDICtx->wptMutex);
15672
15673 /*-----------------------------------------------------------------------
15674 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015675 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015678 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15679 {
15680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15682 "association no longer in progress %d - mysterious HAL response",
15683 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015684
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015688 }
15689
15690 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15691
15692 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 -----------------------------------------------------------------------*/
15695 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15696 {
15697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15698 "Join only allowed in Joining state - failure state is %d "
15699 "strange HAL response", pBSSSes->wdiAssocState);
15700
Jeff Johnsone7245742012-09-05 17:12:55 -070015701 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15702
Jeff Johnson295189b2012-06-20 16:38:30 -070015703 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 }
15706
15707
15708 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015709 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 -----------------------------------------------------------------------*/
15711 if ( WDI_STATUS_SUCCESS != wdiStatus )
15712 {
15713 /*Association was failed by HAL - remove session*/
15714 WDI_DeleteSession(pWDICtx, pBSSSes);
15715
15716 /*Association no longer in progress */
15717 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15718
15719 /*Association no longer in progress - prepare pending assoc for processing*/
15720 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015721
Jeff Johnson295189b2012-06-20 16:38:30 -070015722 }
15723 else
15724 {
15725 /*Transition to state Joining - this may be redundant as we are supposed
15726 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015727 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 }
15729
15730 wpalMutexRelease(&pWDICtx->wptMutex);
15731
15732 /*Notify UMAC*/
15733 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15734
Jeff Johnsone7245742012-09-05 17:12:55 -070015735 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015736}/*WDI_ProcessJoinRsp*/
15737
15738
15739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015740 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015741 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015742
15743 @param pWDICtx: pointer to the WLAN DAL context
15744 pEventData: pointer to the event information structure
15745
Jeff Johnson295189b2012-06-20 16:38:30 -070015746 @see
15747 @return Result of the function call
15748*/
15749WDI_Status
15750WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015751(
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 WDI_ControlBlockType* pWDICtx,
15753 WDI_EventInfoType* pEventData
15754)
15755{
15756 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15757 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015758 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 WDI_BSSSessionType* pBSSSes = NULL;
15760
Jeff Johnsone7245742012-09-05 17:12:55 -070015761 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015762 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15763 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015764
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15766
15767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015768 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015769 -------------------------------------------------------------------------*/
15770 if (( NULL == pEventData ) ||
15771 ( NULL == pEventData->pEventData))
15772 {
15773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015774 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015777 }
15778
15779 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15780
15781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015782 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015784 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15785 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 sizeof(halConfigBssRspMsg.configBssRspParams));
15787
15788 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15789 halConfigBssRspMsg.configBssRspParams.status);
15790 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15791 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15794 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015795
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015797
15798 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015800
15801 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015803
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015805
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015807 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15809 #endif
15810 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15811 halConfigBssRspMsg.configBssRspParams.staMac,
15812 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015813
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 wpalMutexAcquire(&pWDICtx->wptMutex);
15815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015818 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15819 wdiConfigBSSParams.macBSSID,
15820 &pBSSSes);
15821
Jeff Johnson295189b2012-06-20 16:38:30 -070015822 /*-----------------------------------------------------------------------
15823 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015824 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015825 -----------------------------------------------------------------------*/
15826 if ( NULL == pBSSSes )
15827 {
15828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15829 "Association sequence for this BSS does not yet exist "
15830 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015831
15832 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15833
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015835 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015837
Jeff Johnson295189b2012-06-20 16:38:30 -070015838 /*Save data for this BSS*/
15839 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15840 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015841 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015844 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015845 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015846 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015847 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015848 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015849 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015850 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15851 pBSSSes->bcastStaIdx =
15852 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015853
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015855
Jeff Johnson295189b2012-06-20 16:38:30 -070015856 /*-------------------------------------------------------------------------
15857 Add Peer STA
15858 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015859 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15861 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015862
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015865 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015866 wdiAddSTAParam.ucHTCapable =
15867 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15868 wdiAddSTAParam.ucStaType =
15869 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15870
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15873 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015875
15876 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15877 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15878 WDI_MAC_ADDR_LEN);
15879
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015881 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015882 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015885 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015886 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015887 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015888 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015889 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015893
Jeff Johnson295189b2012-06-20 16:38:30 -070015894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15895 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015896
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15898 /*-------------------------------------------------------------------------
15899 Add Broadcast STA only in AP mode
15900 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015901 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015902 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 {
15904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15905 "Add BCAST STA to table for index: %d",
15906 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015907
15908 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015909 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015910
Jeff Johnson295189b2012-06-20 16:38:30 -070015911 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15912 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15913 }
15914 wpalMutexRelease(&pWDICtx->wptMutex);
15915 }
15916 else
15917 {
15918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15919 "Config BSS RSP failed with status : %s(%d)",
15920 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 halConfigBssRspMsg.configBssRspParams.status);
15923
Jeff Johnsone7245742012-09-05 17:12:55 -070015924
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 /*Association was failed by HAL - remove session*/
15926 WDI_DeleteSession(pWDICtx, pBSSSes);
15927
15928 /*Association no longer in progress */
15929 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15930
15931 /*Association no longer in progress - prepare pending assoc for processing*/
15932 WDI_DequeueAssocRequest(pWDICtx);
15933
15934 }
15935
15936 /*Notify UMAC*/
15937 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15938
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015940}/*WDI_ProcessConfigBSSRsp*/
15941
15942
15943/**
15944 @brief Process Del BSS Response function (called when a response
15945 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015946
15947 @param pWDICtx: pointer to the WLAN DAL context
15948 pEventData: pointer to the event information structure
15949
Jeff Johnson295189b2012-06-20 16:38:30 -070015950 @see
15951 @return Result of the function call
15952*/
15953WDI_Status
15954WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015955(
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 WDI_ControlBlockType* pWDICtx,
15957 WDI_EventInfoType* pEventData
15958)
15959{
15960 WDI_DelBSSRspParamsType wdiDelBSSParams;
15961 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015962 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015963 WDI_BSSSessionType* pBSSSes = NULL;
15964
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15967
15968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015970 -------------------------------------------------------------------------*/
15971 if (( NULL == pEventData ) ||
15972 ( NULL == pEventData->pEventData))
15973 {
15974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 }
15979
15980 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15981
15982 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015983 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015984 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015985 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15986 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 sizeof(halDelBssRspMsg.deleteBssRspParams));
15988
15989
15990 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015991 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015992
15993 wpalMutexAcquire(&pWDICtx->wptMutex);
15994
15995 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015996 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015997 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015998 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15999 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16000 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016001
16002 /*-----------------------------------------------------------------------
16003 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016004 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016005 -----------------------------------------------------------------------*/
16006 if ( NULL == pBSSSes )
16007 {
16008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16009 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016010 "association no longer in progress - mysterious HAL response");
16011
16012 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16013
16014 wpalMutexRelease(&pWDICtx->wptMutex);
16015 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016016 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016017
16018 /*Extract BSSID for the response to UMAC*/
16019 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16020 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16021
16022 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16023
16024 /*-----------------------------------------------------------------------
16025 The current session will be deleted
16026 -----------------------------------------------------------------------*/
16027 WDI_DeleteSession(pWDICtx, pBSSSes);
16028
16029
16030 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni06a80512013-10-08 22:41:42 -070016031 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16032 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016033 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016034 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016035 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016036
16037 /* Delete the STA's in this BSS */
16038 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16039
Jeff Johnson295189b2012-06-20 16:38:30 -070016040 wpalMutexRelease(&pWDICtx->wptMutex);
16041
16042 /*Notify UMAC*/
16043 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16044
Jeff Johnsone7245742012-09-05 17:12:55 -070016045 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016046}/*WDI_ProcessDelBSSRsp*/
16047
16048/**
16049 @brief Process Post Assoc Rsp function (called when a response
16050 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016051
16052 @param pWDICtx: pointer to the WLAN DAL context
16053 pEventData: pointer to the event information structure
16054
Jeff Johnson295189b2012-06-20 16:38:30 -070016055 @see
16056 @return Result of the function call
16057*/
16058WDI_Status
16059WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016060(
Jeff Johnson295189b2012-06-20 16:38:30 -070016061 WDI_ControlBlockType* pWDICtx,
16062 WDI_EventInfoType* pEventData
16063)
16064{
16065 WDI_PostAssocRspParamsType wdiPostAssocParams;
16066 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016069 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016070 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16071
16072 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016073 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016074 -------------------------------------------------------------------------*/
16075 if (( NULL == pEventData ) ||
16076 ( NULL == pEventData->pEventData))
16077 {
16078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016079 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016082 }
16083
16084 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16085
16086 /*-------------------------------------------------------------------------
16087 Extract response and send it to UMAC
16088 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16090 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 sizeof(halPostAssocRspMsg.postAssocRspParams));
16092
16093 /*Extract the Post Assoc STA Params */
16094
Jeff Johnsone7245742012-09-05 17:12:55 -070016095 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016096 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016097 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016098 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016099 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16101
Jeff Johnsone7245742012-09-05 17:12:55 -070016102 wdiPostAssocParams.wdiStatus =
16103 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016104
16105 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16106 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016107 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16108 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016109 WDI_MAC_ADDR_LEN);
16110
16111 /* Extract Post Assoc BSS Params */
16112
Jeff Johnsone7245742012-09-05 17:12:55 -070016113 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16114 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16115 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016116
16117 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16118 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016119 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016120 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16121 .macSTA, WDI_MAC_ADDR_LEN);
16122
Jeff Johnsone7245742012-09-05 17:12:55 -070016123 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16125
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016127 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16128
16129 wdiPostAssocParams.bssParams.ucBSSIdx =
16130 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16131
Jeff Johnsone7245742012-09-05 17:12:55 -070016132 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16134
16135 wpalMutexAcquire(&pWDICtx->wptMutex);
16136
16137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016139 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016142 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016143
16144 /*-----------------------------------------------------------------------
16145 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016146 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016147 -----------------------------------------------------------------------*/
16148 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016150 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16151 {
16152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16153 "Association sequence for this BSS does not yet exist or "
16154 "association no longer in progress - mysterious HAL response");
16155
Jeff Johnsone7245742012-09-05 17:12:55 -070016156 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16157
Jeff Johnson295189b2012-06-20 16:38:30 -070016158 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 }
16161
16162 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016163 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 -----------------------------------------------------------------------*/
16165 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16166 {
16167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16168 "Post Assoc not allowed before JOIN - failing request "
16169 "strange HAL response");
16170
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16172
Jeff Johnson295189b2012-06-20 16:38:30 -070016173 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016174 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016175 }
16176
16177 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016178 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 -----------------------------------------------------------------------*/
16180 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16181 {
16182 /*Association was failed by HAL - remove session*/
16183 WDI_DeleteSession(pWDICtx, pBSSSes);
16184 }
16185 else
16186 {
16187 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016189
16190 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016191 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016192 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016193 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016195 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016196 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016198 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16199
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016201 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16202 }
16203
16204 /*Association no longer in progress */
16205 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16206
16207 /*Association no longer in progress - prepare pending assoc for processing*/
16208 WDI_DequeueAssocRequest(pWDICtx);
16209
16210 wpalMutexRelease(&pWDICtx->wptMutex);
16211
16212 /*Notify UMAC*/
16213 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16214
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016216}/*WDI_ProcessPostAssocRsp*/
16217
16218/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016219 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016220 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016221
16222 @param pWDICtx: pointer to the WLAN DAL context
16223 pEventData: pointer to the event information structure
16224
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 @see
16226 @return Result of the function call
16227*/
16228WDI_Status
16229WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016230(
Jeff Johnson295189b2012-06-20 16:38:30 -070016231 WDI_ControlBlockType* pWDICtx,
16232 WDI_EventInfoType* pEventData
16233)
16234{
16235 WDI_DelSTARspParamsType wdiDelSTARsp;
16236 WDI_DelSTARspCb wdiDelSTARspCb;
16237 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016238 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16240
16241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016243 -------------------------------------------------------------------------*/
16244 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16245 ( NULL == pEventData->pEventData))
16246 {
16247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016251 }
16252
16253 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16254
16255 /*-------------------------------------------------------------------------
16256 Extract response and send it to UMAC
16257 -------------------------------------------------------------------------*/
16258 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 sizeof(halDelStaRspMsg.delStaRspParams));
16261
16262 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016263 wdiDelSTARsp.wdiStatus =
16264 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016265
16266 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16267
16268 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16269 if(staType == WDI_STA_ENTRY_SELF)
16270 {
16271 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16272
16273 /* At this point add the self-STA */
16274
16275 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16276 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16277 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16278
16279#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16280#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16281
16282 //all DPU indices are the same for self STA
16283 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16284 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16285 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16286 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16287 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16288 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016289
16290 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 }
16292 else
16293 {
16294 //Delete the station in the table
16295 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16296 }
16297
16298 /*Notify UMAC*/
16299 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16300
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016302}/*WDI_ProcessDelSTARsp*/
16303
16304
16305/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016306 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016307==========================================================================*/
16308
16309/**
16310 @brief Process Set BSS Key Rsp function (called when a response
16311 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016312
16313 @param pWDICtx: pointer to the WLAN DAL context
16314 pEventData: pointer to the event information structure
16315
Jeff Johnson295189b2012-06-20 16:38:30 -070016316 @see
16317 @return Result of the function call
16318*/
16319WDI_Status
16320WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016321(
Jeff Johnson295189b2012-06-20 16:38:30 -070016322 WDI_ControlBlockType* pWDICtx,
16323 WDI_EventInfoType* pEventData
16324)
16325{
16326 WDI_Status wdiStatus;
16327 eHalStatus halStatus;
16328 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16330
16331 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016332 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016333 -------------------------------------------------------------------------*/
16334 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16335 ( NULL == pEventData->pEventData))
16336 {
16337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016338 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016339 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016340 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016341 }
16342
16343 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16344
16345 /*-------------------------------------------------------------------------
16346 Extract response and send it to UMAC
16347 -------------------------------------------------------------------------*/
16348 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016349 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016350
16351 if ( eHAL_STATUS_SUCCESS != halStatus )
16352 {
16353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16354 "Set BSS Key failed with status %s (%d)",
16355 WDI_getHALStatusMsgString(halStatus),
16356 halStatus);
16357 /* send the status to UMAC, don't return from here*/
16358 }
16359
16360 /*Notify UMAC*/
16361 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16362
Jeff Johnsone7245742012-09-05 17:12:55 -070016363 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016364}/*WDI_ProcessSetBssKeyRsp*/
16365
16366/**
16367 @brief Process Remove BSS Key Rsp function (called when a response
16368 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016369
16370 @param pWDICtx: pointer to the WLAN DAL context
16371 pEventData: pointer to the event information structure
16372
Jeff Johnson295189b2012-06-20 16:38:30 -070016373 @see
16374 @return Result of the function call
16375*/
16376WDI_Status
16377WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016378(
Jeff Johnson295189b2012-06-20 16:38:30 -070016379 WDI_ControlBlockType* pWDICtx,
16380 WDI_EventInfoType* pEventData
16381)
16382{
16383 WDI_Status wdiStatus;
16384 eHalStatus halStatus;
16385 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16387
16388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 -------------------------------------------------------------------------*/
16391 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16392 ( NULL == pEventData->pEventData))
16393 {
16394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 }
16399
16400 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16401
16402 /*-------------------------------------------------------------------------
16403 Extract response and send it to UMAC
16404 -------------------------------------------------------------------------*/
16405 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016406 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016407
16408 if ( eHAL_STATUS_SUCCESS != halStatus )
16409 {
16410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16411 "Remove BSS Key failed with status %s (%d )",
16412 WDI_getHALStatusMsgString(halStatus),
16413 halStatus);
16414 /* send the status to UMAC, don't return from here*/
16415 }
16416
16417 /*Notify UMAC*/
16418 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16419
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016421}/*WDI_ProcessSetBssKeyRsp*/
16422
16423
16424/**
16425 @brief Process Set STA Key Rsp function (called when a response
16426 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016427
16428 @param pWDICtx: pointer to the WLAN DAL context
16429 pEventData: pointer to the event information structure
16430
Jeff Johnson295189b2012-06-20 16:38:30 -070016431 @see
16432 @return Result of the function call
16433*/
16434WDI_Status
16435WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016436(
Jeff Johnson295189b2012-06-20 16:38:30 -070016437 WDI_ControlBlockType* pWDICtx,
16438 WDI_EventInfoType* pEventData
16439)
16440{
16441 WDI_Status wdiStatus;
16442 eHalStatus halStatus;
16443 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16445
16446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016448 -------------------------------------------------------------------------*/
16449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16450 ( NULL == pEventData->pEventData))
16451 {
16452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016456 }
16457
16458 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16459
16460 /*-------------------------------------------------------------------------
16461 Extract response and send it to UMAC
16462 -------------------------------------------------------------------------*/
16463 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016465
16466 if ( eHAL_STATUS_SUCCESS != halStatus )
16467 {
16468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16469 "Set STA Key failed with status %s (%d)",
16470 WDI_getHALStatusMsgString(halStatus),
16471 halStatus);
16472 /* send the status to UMAC, don't return from here*/
16473 }
16474
16475 /*Notify UMAC*/
16476 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16477
Jeff Johnsone7245742012-09-05 17:12:55 -070016478 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016479}/*WDI_ProcessSetSTAKeyRsp*/
16480
16481/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016482 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016483 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016484
16485 @param pWDICtx: pointer to the WLAN DAL context
16486 pEventData: pointer to the event information structure
16487
Jeff Johnson295189b2012-06-20 16:38:30 -070016488 @see
16489 @return Result of the function call
16490*/
16491WDI_Status
16492WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016493(
Jeff Johnson295189b2012-06-20 16:38:30 -070016494 WDI_ControlBlockType* pWDICtx,
16495 WDI_EventInfoType* pEventData
16496)
16497{
16498 WDI_Status wdiStatus;
16499 eHalStatus halStatus;
16500 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16502
16503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 -------------------------------------------------------------------------*/
16506 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16507 ( NULL == pEventData->pEventData))
16508 {
16509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 }
16514
16515 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16516
16517 /*-------------------------------------------------------------------------
16518 Extract response and send it to UMAC
16519 -------------------------------------------------------------------------*/
16520 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016521 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016522
16523 if ( eHAL_STATUS_SUCCESS != halStatus )
16524 {
16525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16526 "Remove STA Key failed with status %s (%d)",
16527 WDI_getHALStatusMsgString(halStatus),
16528 halStatus);
16529 /* send the status to UMAC, don't return from here*/
16530 }
16531
16532 /*Notify UMAC*/
16533 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16534
Jeff Johnsone7245742012-09-05 17:12:55 -070016535 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016536}/*WDI_ProcessRemoveStaKeyRsp*/
16537
16538/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016539 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016540 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016541
16542 @param pWDICtx: pointer to the WLAN DAL context
16543 pEventData: pointer to the event information structure
16544
Jeff Johnson295189b2012-06-20 16:38:30 -070016545 @see
16546 @return Result of the function call
16547*/
16548WDI_Status
16549WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016550(
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 WDI_ControlBlockType* pWDICtx,
16552 WDI_EventInfoType* pEventData
16553)
16554{
16555 WDI_Status wdiStatus;
16556 eHalStatus halStatus;
16557 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16559
16560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016561 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016562 -------------------------------------------------------------------------*/
16563 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16564 ( NULL == pEventData->pEventData))
16565 {
16566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016567 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 }
16571
16572 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16573
16574 /*-------------------------------------------------------------------------
16575 Extract response and send it to UMAC
16576 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016577 wpalMemoryCopy( &halStatus,
16578 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016579 sizeof(halStatus));
16580
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016582
16583 if ( eHAL_STATUS_SUCCESS != halStatus )
16584 {
16585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16586 "Set STA Key failed with status %s (%d)",
16587 WDI_getHALStatusMsgString(halStatus),
16588 halStatus);
16589 /* send the status to UMAC, don't return from here*/
16590 }
16591
16592 /*Notify UMAC*/
16593 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16594
Jeff Johnsone7245742012-09-05 17:12:55 -070016595 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016596}/*WDI_ProcessSetSTABcastKeyRsp*/
16597
16598/**
16599 @brief Process Remove STA Bcast Key Rsp function (called when a
16600 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016601
16602 @param pWDICtx: pointer to the WLAN DAL context
16603 pEventData: pointer to the event information structure
16604
Jeff Johnson295189b2012-06-20 16:38:30 -070016605 @see
16606 @return Result of the function call
16607*/
16608WDI_Status
16609WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016610(
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 WDI_ControlBlockType* pWDICtx,
16612 WDI_EventInfoType* pEventData
16613)
16614{
16615 WDI_Status wdiStatus;
16616 eHalStatus halStatus;
16617 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16619
16620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 -------------------------------------------------------------------------*/
16623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16624 ( NULL == pEventData->pEventData))
16625 {
16626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 }
16631
16632 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16633
16634 /*-------------------------------------------------------------------------
16635 Extract response and send it to UMAC
16636 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016637 wpalMemoryCopy( &halStatus,
16638 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 sizeof(halStatus));
16640
Jeff Johnsone7245742012-09-05 17:12:55 -070016641 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016642
16643 if ( eHAL_STATUS_SUCCESS != halStatus )
16644 {
16645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16646 "Remove STA Key failed with status %s (%d)",
16647 WDI_getHALStatusMsgString(halStatus),
16648 halStatus);
16649 /* send the status to UMAC, don't return from here*/
16650 }
16651
16652 /*Notify UMAC*/
16653 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16654
Jeff Johnsone7245742012-09-05 17:12:55 -070016655 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016656}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16657
16658
16659/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016660 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016661==========================================================================*/
16662
16663/**
16664 @brief Process Add TSpec Rsp function (called when a response
16665 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016666
16667 @param pWDICtx: pointer to the WLAN DAL context
16668 pEventData: pointer to the event information structure
16669
Jeff Johnson295189b2012-06-20 16:38:30 -070016670 @see
16671 @return Result of the function call
16672*/
16673WDI_Status
16674WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016675(
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 WDI_ControlBlockType* pWDICtx,
16677 WDI_EventInfoType* pEventData
16678)
16679{
16680 WDI_Status wdiStatus;
16681 eHalStatus halStatus;
16682 WDI_AddTsRspCb wdiAddTsRspCb;
16683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16684
16685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016687 -------------------------------------------------------------------------*/
16688 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16689 ( NULL == pEventData->pEventData))
16690 {
16691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 }
16696
16697 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16698
16699 /*-------------------------------------------------------------------------
16700 Extract response and send it to UMAC
16701 -------------------------------------------------------------------------*/
16702 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016703 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016704
16705 /*Notify UMAC*/
16706 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16707
Jeff Johnsone7245742012-09-05 17:12:55 -070016708 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016709}/*WDI_ProcessAddTSpecRsp*/
16710
16711
16712/**
16713 @brief Process Del TSpec Rsp function (called when a response
16714 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016715
16716 @param pWDICtx: pointer to the WLAN DAL context
16717 pEventData: pointer to the event information structure
16718
Jeff Johnson295189b2012-06-20 16:38:30 -070016719 @see
16720 @return Result of the function call
16721*/
16722WDI_Status
16723WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016724(
Jeff Johnson295189b2012-06-20 16:38:30 -070016725 WDI_ControlBlockType* pWDICtx,
16726 WDI_EventInfoType* pEventData
16727)
16728{
16729 WDI_Status wdiStatus;
16730 eHalStatus halStatus;
16731 WDI_DelTsRspCb wdiDelTsRspCb;
16732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16733
16734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016736 -------------------------------------------------------------------------*/
16737 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16738 ( NULL == pEventData->pEventData))
16739 {
16740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016744 }
16745
16746 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16747
16748 /*-------------------------------------------------------------------------
16749 Extract response and send it to UMAC
16750 -------------------------------------------------------------------------*/
16751 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016752 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016753
16754 /*Notify UMAC*/
16755 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16756
Jeff Johnsone7245742012-09-05 17:12:55 -070016757 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016758}/*WDI_ProcessDelTSpecRsp*/
16759
16760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016761 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016763
16764 @param pWDICtx: pointer to the WLAN DAL context
16765 pEventData: pointer to the event information structure
16766
Jeff Johnson295189b2012-06-20 16:38:30 -070016767 @see
16768 @return Result of the function call
16769*/
16770WDI_Status
16771WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016772(
Jeff Johnson295189b2012-06-20 16:38:30 -070016773 WDI_ControlBlockType* pWDICtx,
16774 WDI_EventInfoType* pEventData
16775)
16776{
16777 WDI_Status wdiStatus;
16778 eHalStatus halStatus;
16779 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16781
16782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016784 -------------------------------------------------------------------------*/
16785 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16786 ( NULL == pEventData->pEventData))
16787 {
16788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016792 }
16793
16794 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16795
16796 /*-------------------------------------------------------------------------
16797 Extract response and send it to UMAC
16798 -------------------------------------------------------------------------*/
16799 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016800 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016801
16802 /*Notify UMAC*/
16803 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16804
Jeff Johnsone7245742012-09-05 17:12:55 -070016805 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016806}/*WDI_ProcessUpdateEDCAParamsRsp*/
16807
16808
16809/**
16810 @brief Process Add BA Rsp function (called when a response
16811 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016812
16813 @param pWDICtx: pointer to the WLAN DAL context
16814 pEventData: pointer to the event information structure
16815
Jeff Johnson295189b2012-06-20 16:38:30 -070016816 @see
16817 @return Result of the function call
16818*/
16819WDI_Status
16820WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016821(
Jeff Johnson295189b2012-06-20 16:38:30 -070016822 WDI_ControlBlockType* pWDICtx,
16823 WDI_EventInfoType* pEventData
16824)
16825{
16826 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16827
16828 tAddBASessionRspParams halBASessionRsp;
16829 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16830
Jeff Johnsone7245742012-09-05 17:12:55 -070016831
Jeff Johnson295189b2012-06-20 16:38:30 -070016832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16833
16834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016835 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016836 -------------------------------------------------------------------------*/
16837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16838 ( NULL == pEventData->pEventData))
16839 {
16840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016841 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016844 }
16845
16846 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16847
16848 /*-------------------------------------------------------------------------
16849 Extract response and send it to UMAC
16850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016851 wpalMemoryCopy( &halBASessionRsp,
16852 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016853 sizeof(halBASessionRsp));
16854
16855 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16856
Jeff Johnson43971f52012-07-17 12:26:56 -070016857 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016858 {
16859 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16860 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16861 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16862 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16863 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16864 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16865 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16866 }
16867
16868 /*Notify UMAC*/
16869 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16870
Jeff Johnsone7245742012-09-05 17:12:55 -070016871 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016872}/*WDI_ProcessAddSessionBARsp*/
16873
16874
16875/**
16876 @brief Process Del BA Rsp function (called when a response
16877 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016878
16879 @param pWDICtx: pointer to the WLAN DAL context
16880 pEventData: pointer to the event information structure
16881
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 @see
16883 @return Result of the function call
16884*/
16885WDI_Status
16886WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016887(
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 WDI_ControlBlockType* pWDICtx,
16889 WDI_EventInfoType* pEventData
16890)
16891{
16892 WDI_Status wdiStatus;
16893 eHalStatus halStatus;
16894 WDI_DelBARspCb wdiDelBARspCb;
16895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16896
16897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016899 -------------------------------------------------------------------------*/
16900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16901 ( NULL == pEventData->pEventData))
16902 {
16903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 }
16908
16909 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16910
16911 /*-------------------------------------------------------------------------
16912 Extract response and send it to UMAC
16913 -------------------------------------------------------------------------*/
16914 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016915 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016916
16917 if ( eHAL_STATUS_SUCCESS == halStatus )
16918 {
16919 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16920 }
16921
16922 /*Notify UMAC*/
16923 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16924
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016926}/*WDI_ProcessDelBARsp*/
16927
16928#ifdef FEATURE_WLAN_CCX
16929/**
16930 @brief Process TSM Stats Rsp function (called when a response
16931 is being received over the bus from HAL)
16932
16933 @param pWDICtx: pointer to the WLAN DAL context
16934 pEventData: pointer to the event information structure
16935
16936 @see
16937 @return Result of the function call
16938*/
16939WDI_Status
16940WDI_ProcessTsmStatsRsp
16941(
16942 WDI_ControlBlockType* pWDICtx,
16943 WDI_EventInfoType* pEventData
16944)
16945{
16946 WDI_TsmRspCb wdiTsmStatsRspCb;
16947 tTsmStatsRspMsg halTsmStatsRspMsg;
16948 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16950
16951 /*-------------------------------------------------------------------------
16952 Sanity check
16953 -------------------------------------------------------------------------*/
16954 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16955 ( NULL == pEventData->pEventData))
16956 {
16957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016959 WDI_ASSERT(0);
16960 return WDI_STATUS_E_FAILURE;
16961 }
16962
16963 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16964
16965 /*-------------------------------------------------------------------------
16966 Unpack HAL Response Message - the header was already extracted by the
16967 main Response Handling procedure
16968 -------------------------------------------------------------------------*/
16969 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16970 pEventData->pEventData,
16971 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16972
16973 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16974 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16975 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16976 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16977 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16978 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16979 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16980 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16981 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16982 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16983 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16984 halTsmStatsRspMsg.tsmStatsRspParams.status);
16985
16986 /*Notify UMAC*/
16987 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16988
16989 return WDI_STATUS_SUCCESS;
16990}/*WDI_ProcessTsmStatsRsp*/
16991
16992#endif
16993
16994
16995
16996/**
16997 @brief Process Flush AC Rsp function (called when a response
16998 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016999
17000 @param pWDICtx: pointer to the WLAN DAL context
17001 pEventData: pointer to the event information structure
17002
Jeff Johnson295189b2012-06-20 16:38:30 -070017003 @see
17004 @return Result of the function call
17005*/
17006WDI_Status
17007WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017008(
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 WDI_ControlBlockType* pWDICtx,
17010 WDI_EventInfoType* pEventData
17011)
17012{
17013 WDI_Status wdiStatus;
17014 eHalStatus halStatus;
17015 WDI_FlushAcRspCb wdiFlushAcRspCb;
17016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17017
17018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 -------------------------------------------------------------------------*/
17021 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17022 ( NULL == pEventData->pEventData))
17023 {
17024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017028 }
17029
17030 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17031
17032 /*-------------------------------------------------------------------------
17033 Extract response and send it to UMAC
17034 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017035 wpalMemoryCopy( &halStatus,
17036 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017037 sizeof(halStatus));
17038
Jeff Johnsone7245742012-09-05 17:12:55 -070017039 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017040
17041 /*Notify UMAC*/
17042 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17043
Jeff Johnsone7245742012-09-05 17:12:55 -070017044 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017045}/*WDI_ProcessFlushAcRsp*/
17046
17047/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017048 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017049 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017050
17051 @param pWDICtx: pointer to the WLAN DAL context
17052 pEventData: pointer to the event information structure
17053
Jeff Johnson295189b2012-06-20 16:38:30 -070017054 @see
17055 @return Result of the function call
17056*/
17057WDI_Status
17058WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017059(
Jeff Johnson295189b2012-06-20 16:38:30 -070017060 WDI_ControlBlockType* pWDICtx,
17061 WDI_EventInfoType* pEventData
17062)
17063{
17064 WDI_Status wdiStatus;
17065 eHalStatus halStatus;
17066 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17068
17069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017071 -------------------------------------------------------------------------*/
17072 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17073 ( NULL == pEventData->pEventData))
17074 {
17075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017079 }
17080
17081 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17082
17083 /*-------------------------------------------------------------------------
17084 Extract response and send it to UMAC
17085 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017086 wpalMemoryCopy( &halStatus,
17087 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 sizeof(halStatus));
17089
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017091
17092 /*Notify UMAC*/
17093 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17094
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017096}/*WDI_ProcessBtAmpEventRsp*/
17097
17098
17099/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017100 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017101 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017102
17103 @param pWDICtx: pointer to the WLAN DAL context
17104 pEventData: pointer to the event information structure
17105
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 @see
17107 @return Result of the function call
17108*/
17109WDI_Status
17110WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017111(
Jeff Johnson295189b2012-06-20 16:38:30 -070017112 WDI_ControlBlockType* pWDICtx,
17113 WDI_EventInfoType* pEventData
17114)
17115{
17116 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17117 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17118 tAddStaSelfRspMsg halAddStaSelfRsp;
17119 WDI_AddStaParams wdiAddSTAParam = {0};
17120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17121
17122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017123 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017124 -------------------------------------------------------------------------*/
17125 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17126 ( NULL == pEventData->pEventData))
17127 {
17128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017129 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 }
17133
Jeff Johnsone7245742012-09-05 17:12:55 -070017134 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17136
17137 /*-------------------------------------------------------------------------
17138 Extract response and send it to UMAC
17139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017140 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17141 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017142 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17143
17144
Jeff Johnsone7245742012-09-05 17:12:55 -070017145 wdiAddSTASelfParams.wdiStatus =
17146 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017147
Jeff Johnsone7245742012-09-05 17:12:55 -070017148 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017149 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017150 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017151 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017152 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17154
17155 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17156 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17157 WDI_MAC_ADDR_LEN);
17158
17159
17160#ifdef HAL_SELF_STA_PER_BSS
17161
17162 /* At this point add the self-STA */
17163
17164 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17165 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17166 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17167
17168 //all DPU indices are the same for self STA
17169
17170 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017171 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17173 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17174 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17175 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17176 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17177
17178 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17179 WDI_MAC_ADDR_LEN);
17180
17181 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17182 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17183
Jeff Johnsone7245742012-09-05 17:12:55 -070017184 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017185 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17186 {
17187 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17188 }
17189#endif
17190
17191 /*Notify UMAC*/
17192 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17193
Jeff Johnsone7245742012-09-05 17:12:55 -070017194 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017195}/*WDI_ProcessAddSTASelfRsp*/
17196
17197
17198
17199/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017200 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017201 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017202
17203 @param pWDICtx: pointer to the WLAN DAL context
17204 pEventData: pointer to the event information structure
17205
Jeff Johnson295189b2012-06-20 16:38:30 -070017206 @see
17207 @return Result of the function call
17208*/
17209WDI_Status
17210WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017211(
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 WDI_ControlBlockType* pWDICtx,
17213 WDI_EventInfoType* pEventData
17214)
17215{
17216 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17217 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17218 tDelStaSelfRspParams delStaSelfRspParams;
17219 wpt_uint8 ucStaIdx;
17220
17221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17222
17223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017225 -------------------------------------------------------------------------*/
17226 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17227 ( NULL == pEventData->pEventData))
17228 {
17229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017230 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017233 }
17234
17235 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17236
17237 /*-------------------------------------------------------------------------
17238 Extract response and send it to UMAC
17239 -------------------------------------------------------------------------*/
17240
Jeff Johnsone7245742012-09-05 17:12:55 -070017241 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 (wpt_uint8*)pEventData->pEventData,
17243 sizeof(tDelStaSelfRspParams));
17244
Jeff Johnsone7245742012-09-05 17:12:55 -070017245 wdiDelStaSelfRspParams.wdiStatus =
17246 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017247
Jeff Johnsone7245742012-09-05 17:12:55 -070017248 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017249 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17250 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17251 {
17252 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017253 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017254 delStaSelfRspParams.selfMacAddr,
17255 &ucStaIdx);
17256 if(WDI_STATUS_E_FAILURE == wdiStatus)
17257 {
17258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017259 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017262 }
17263 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17264 }
17265
17266 /*Notify UMAC*/
17267 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17268
17269 return WDI_STATUS_SUCCESS;
17270}
17271
Jeff Johnsone7245742012-09-05 17:12:55 -070017272#ifdef FEATURE_OEM_DATA_SUPPORT
17273/**
17274 @brief Start Oem Data Rsp function (called when a
17275 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017276
Jeff Johnsone7245742012-09-05 17:12:55 -070017277 @param pWDICtx: pointer to the WLAN DAL context
17278 pEventData: pointer to the event information structure
17279
17280 @see
17281 @return Result of the function call
17282*/
17283#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17284
17285WDI_Status
17286WDI_ProcessStartOemDataRsp
17287(
17288 WDI_ControlBlockType* pWDICtx,
17289 WDI_EventInfoType* pEventData
17290)
17291{
17292 WDI_oemDataRspCb wdiOemDataRspCb;
17293 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17294 tStartOemDataRspParams* halStartOemDataRspParams;
17295
17296 /*-------------------------------------------------------------------------
17297 Sanity check
17298 -------------------------------------------------------------------------*/
17299 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17300 ( NULL == pEventData->pEventData))
17301 {
17302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017303 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017304 WDI_ASSERT(0);
17305 return WDI_STATUS_E_FAILURE;
17306 }
17307
17308 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17309
17310 /*-------------------------------------------------------------------------
17311 Extract response and send it to UMAC
17312 -------------------------------------------------------------------------*/
17313 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17314
17315
17316 //It is the responsibility of the application code to check for failure
17317 //conditions!
17318
17319 //Allocate memory for WDI OEM DATA RSP structure
17320 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17321
17322 if(NULL == wdiOemDataRspParams)
17323 {
17324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017325 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017326 pWDICtx, pEventData, pEventData->pEventData);
17327 WDI_ASSERT(0);
17328 return WDI_STATUS_E_FAILURE;
17329 }
17330
17331 /* Populate WDI structure members */
17332 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17333
17334 /*Notify UMAC*/
17335 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17336
17337 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17338 wpalMemoryFree(wdiOemDataRspParams);
17339
17340 return WDI_STATUS_SUCCESS;
17341}/*WDI_PrcoessStartOemDataRsp*/
17342#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017343
17344/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017345 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017346===========================================================================*/
17347
17348/**
17349 @brief Process Channel Switch Rsp function (called when a response
17350 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017351
17352 @param pWDICtx: pointer to the WLAN DAL context
17353 pEventData: pointer to the event information structure
17354
Jeff Johnson295189b2012-06-20 16:38:30 -070017355 @see
17356 @return Result of the function call
17357*/
17358WDI_Status
17359WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017360(
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 WDI_ControlBlockType* pWDICtx,
17362 WDI_EventInfoType* pEventData
17363)
17364{
17365 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17366 WDI_SwitchChRspCb wdiChSwitchRspCb;
17367 tSwitchChannelRspParams halSwitchChannelRsp;
17368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17369
17370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 -------------------------------------------------------------------------*/
17373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17374 ( NULL == pEventData->pEventData))
17375 {
17376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 }
17381
17382 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17383
17384 /*-------------------------------------------------------------------------
17385 Extract response and send it to UMAC
17386 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017387 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017388 (wpt_uint8*)pEventData->pEventData,
17389 sizeof(halSwitchChannelRsp));
17390
Jeff Johnsone7245742012-09-05 17:12:55 -070017391 wdiSwitchChRsp.wdiStatus =
17392 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017393 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17394
17395#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017396 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017397#endif
17398
17399 /*Notify UMAC*/
17400 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17401
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017403}/*WDI_ProcessChannelSwitchRsp*/
17404
17405
17406/**
17407 @brief Process Config STA Rsp function (called when a response
17408 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017409
17410 @param pWDICtx: pointer to the WLAN DAL context
17411 pEventData: pointer to the event information structure
17412
Jeff Johnson295189b2012-06-20 16:38:30 -070017413 @see
17414 @return Result of the function call
17415*/
17416WDI_Status
17417WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017418(
Jeff Johnson295189b2012-06-20 16:38:30 -070017419 WDI_ControlBlockType* pWDICtx,
17420 WDI_EventInfoType* pEventData
17421)
17422{
17423 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17424 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17425 WDI_AddStaParams wdiAddSTAParam;
17426
17427 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017428 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017429
Jeff Johnsone7245742012-09-05 17:12:55 -070017430 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17432
17433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017435 -------------------------------------------------------------------------*/
17436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17437 ( NULL == pEventData->pEventData))
17438 {
17439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017443 }
17444
17445 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17446
17447 /*-------------------------------------------------------------------------
17448 Extract response and send it to UMAC
17449 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017450 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17451 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017452 sizeof(halConfigStaRsp.configStaRspParams));
17453
17454
17455 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17456 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17457 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17458 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17459 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17460
17461 /* MAC Address of STA - take from cache as it does not come back in the
17462 response*/
17463 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017464 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017465 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017466
17467 wdiCfgSTAParams.wdiStatus =
17468 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017469
17470 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17471 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17472 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17473
17474 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17475 {
17476 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17477 {
17478 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017479 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017480 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17481 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017482
Jeff Johnson295189b2012-06-20 16:38:30 -070017483 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017484 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017485 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017486 wdiAddSTAParam.ucHTCapable =
17487 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17488 wdiAddSTAParam.ucStaType =
17489 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017490 wdiAddSTAParam.ucRmfEnabled =
17491 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017492
Jeff Johnson295189b2012-06-20 16:38:30 -070017493 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017494 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17495 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017496 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017497
17498 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17499 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17500 WDI_MAC_ADDR_LEN);
17501
17502 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17503 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17504 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017505
17506 if ( NULL == pBSSSes )
17507 {
17508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17509 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017510
Jeff Johnson295189b2012-06-20 16:38:30 -070017511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017513 }
17514
17515 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017516 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017518 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017519 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017520 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017521 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017522 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017523 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017524 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017525
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17527 }
17528 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17529 {
17530 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17531
Jeff Johnsone7245742012-09-05 17:12:55 -070017532 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017533 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017534 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017536 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017537 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017538 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017539 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017540 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017541 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017544 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017545 halConfigStaRsp.configStaRspParams.ucUcastSig;
17546 }
17547 }
17548
17549 /*Notify UMAC*/
17550 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17551
Jeff Johnsone7245742012-09-05 17:12:55 -070017552 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017553}/*WDI_ProcessConfigStaRsp*/
17554
17555
17556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017557 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017558 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017559
17560 @param pWDICtx: pointer to the WLAN DAL context
17561 pEventData: pointer to the event information structure
17562
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 @see
17564 @return Result of the function call
17565*/
17566WDI_Status
17567WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017568(
Jeff Johnson295189b2012-06-20 16:38:30 -070017569 WDI_ControlBlockType* pWDICtx,
17570 WDI_EventInfoType* pEventData
17571)
17572{
17573 WDI_Status wdiStatus;
17574 eHalStatus halStatus;
17575 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17576
17577 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017578 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17580
17581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017582 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017583 -------------------------------------------------------------------------*/
17584 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17585 ( NULL == pEventData->pEventData))
17586 {
17587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017591 }
17592
17593 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17594
17595 wpalMutexAcquire(&pWDICtx->wptMutex);
17596
17597 /*If the link is being transitioned to idle - the BSS is to be deleted
17598 - this type of ending a session is possible when UMAC has failed an
17599 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017600 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017601 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17602 {
17603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017604 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017605 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017606 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17607 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17608 &pBSSSes);
17609
Jeff Johnson295189b2012-06-20 16:38:30 -070017610 /*-----------------------------------------------------------------------
17611 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017612 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017613 -----------------------------------------------------------------------*/
17614 if ( NULL == pBSSSes )
17615 {
17616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17617 "Set link response received outside association session");
17618 }
17619 else
17620 {
17621 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17622 will be del BSS coming after this to stop the beaconing & cleaning up the
17623 sessions*/
17624 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17625 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17626 {
17627 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017628 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017629 -----------------------------------------------------------------------*/
17630 WDI_DeleteSession(pWDICtx, pBSSSes);
17631
17632 /*-----------------------------------------------------------------------
17633 Check to see if this association is in progress - if so disable the
17634 flag as this has ended
17635 -----------------------------------------------------------------------*/
17636 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017637 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017638 /*Association no longer in progress */
17639 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17640 /*Association no longer in progress - prepare pending assoc for processing*/
17641 WDI_DequeueAssocRequest(pWDICtx);
17642 }
17643 }
17644 }
17645 }
17646 /* If the link state has been set to POST ASSOC, reset the "association in
17647 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017648 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017649 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17650 {
17651 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17652 WDI_DequeueAssocRequest(pWDICtx);
17653 }
17654
17655 wpalMutexRelease(&pWDICtx->wptMutex);
17656
17657 /*-------------------------------------------------------------------------
17658 Extract response and send it to UMAC
17659 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017660 wpalMemoryCopy( &halStatus,
17661 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017662 sizeof(halStatus));
17663
Jeff Johnsone7245742012-09-05 17:12:55 -070017664 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017665
17666 /*Notify UMAC*/
17667 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17668
Jeff Johnsone7245742012-09-05 17:12:55 -070017669 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017670}/*WDI_ProcessSetLinkStateRsp*/
17671
17672/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017673 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017674 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017675
17676 @param pWDICtx: pointer to the WLAN DAL context
17677 pEventData: pointer to the event information structure
17678
Jeff Johnson295189b2012-06-20 16:38:30 -070017679 @see
17680 @return Result of the function call
17681*/
17682WDI_Status
17683WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017684(
Jeff Johnson295189b2012-06-20 16:38:30 -070017685 WDI_ControlBlockType* pWDICtx,
17686 WDI_EventInfoType* pEventData
17687)
17688{
17689 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17690 WDI_GetStatsRspCb wdiGetStatsRspCb;
17691 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017692
Jeff Johnson295189b2012-06-20 16:38:30 -070017693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17694
17695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017697 -------------------------------------------------------------------------*/
17698 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17699 ( NULL == pEventData->pEventData))
17700 {
17701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017705 }
17706
17707 /*-------------------------------------------------------------------------
17708 Extract response and send it to UMAC
17709 -------------------------------------------------------------------------*/
17710 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17711
17712 /*allocate the stats response buffer */
17713 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17714 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17715 + sizeof(WDI_GetStatsRspParamsType));
17716
17717 if(NULL == wdiGetStatsRsp)
17718 {
17719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017720 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070017721 pWDICtx, pEventData, pEventData->pEventData);
17722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017724 }
17725
17726 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17727
17728 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17729 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17730 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17731 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17732 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17733 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17734
17735 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17736 wpalMemoryCopy(wdiGetStatsRsp + 1,
17737 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17738 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17739
17740 /*Notify UMAC*/
17741 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17742
17743 wpalMemoryFree(wdiGetStatsRsp);
17744
Jeff Johnsone7245742012-09-05 17:12:55 -070017745 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017746}/*WDI_ProcessGetStatsRsp*/
17747
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017748#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17749/**
17750 @brief Process Get Roam Rssi Rsp function (called when a response is
17751 being received over the bus from HAL)
17752
17753 @param pWDICtx: pointer to the WLAN DAL context
17754 pEventData: pointer to the event information structure
17755
17756 @see
17757 @return Result of the function call
17758*/
17759WDI_Status
17760WDI_ProcessGetRoamRssiRsp
17761(
17762 WDI_ControlBlockType* pWDICtx,
17763 WDI_EventInfoType* pEventData
17764)
17765{
17766 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17767 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17768 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17770
17771 /*-------------------------------------------------------------------------
17772 Sanity check
17773 -------------------------------------------------------------------------*/
17774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17775 ( NULL == pEventData->pEventData))
17776 {
17777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17778 "%s: Invalid parameters", __func__);
17779 WDI_ASSERT(0);
17780 return WDI_STATUS_E_FAILURE;
17781 }
17782
17783 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17784 if(NULL == wdiGetRoamRssiRspCb)
17785 {
17786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17787 "%s: call back function is NULL", __func__);
17788 WDI_ASSERT(0);
17789 return WDI_STATUS_E_FAILURE;
17790 }
17791
17792 /*-------------------------------------------------------------------------
17793 Extract response and send it to UMAC
17794 -------------------------------------------------------------------------*/
17795 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17796 pEventData->pEventData,
17797 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17798
17799 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17800 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17801 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17802
17803 /*Notify UMAC*/
17804 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17805
17806 return WDI_STATUS_SUCCESS;
17807}/*WDI_ProcessGetRoamRssiRsp*/
17808#endif
17809
Jeff Johnson295189b2012-06-20 16:38:30 -070017810
17811/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017812 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017813 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017814
17815 @param pWDICtx: pointer to the WLAN DAL context
17816 pEventData: pointer to the event information structure
17817
Jeff Johnson295189b2012-06-20 16:38:30 -070017818 @see
17819 @return Result of the function call
17820*/
17821WDI_Status
17822WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017823(
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 WDI_ControlBlockType* pWDICtx,
17825 WDI_EventInfoType* pEventData
17826)
17827{
17828 WDI_Status wdiStatus;
17829 eHalStatus halStatus;
17830 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17832
17833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017835 -------------------------------------------------------------------------*/
17836 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17837 ( NULL == pEventData->pEventData))
17838 {
17839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017843 }
17844
17845 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17846
17847 /*-------------------------------------------------------------------------
17848 Extract response and send it to UMAC
17849 -------------------------------------------------------------------------*/
17850 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017851 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017852
17853 /*Notify UMAC*/
17854 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17855
Jeff Johnsone7245742012-09-05 17:12:55 -070017856 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017857}/*WDI_ProcessUpdateCfgRsp*/
17858
17859
17860
17861/**
17862 @brief Process Add BA Rsp function (called when a response
17863 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017864
17865 @param pWDICtx: pointer to the WLAN DAL context
17866 pEventData: pointer to the event information structure
17867
Jeff Johnson295189b2012-06-20 16:38:30 -070017868 @see
17869 @return Result of the function call
17870*/
17871WDI_Status
17872WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017873(
Jeff Johnson295189b2012-06-20 16:38:30 -070017874 WDI_ControlBlockType* pWDICtx,
17875 WDI_EventInfoType* pEventData
17876)
17877{
17878 WDI_AddBARspCb wdiAddBARspCb;
17879
17880 tAddBARspParams halAddBARsp;
17881 WDI_AddBARspinfoType wdiAddBARsp;
17882
17883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17884
17885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017887 -------------------------------------------------------------------------*/
17888 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17889 ( NULL == pEventData->pEventData))
17890 {
17891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 }
17896
17897 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17898
17899 /*-------------------------------------------------------------------------
17900 Extract response and send it to UMAC
17901 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017902 wpalMemoryCopy( &halAddBARsp,
17903 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017904 sizeof(halAddBARsp));
17905
17906 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17907
Jeff Johnson43971f52012-07-17 12:26:56 -070017908 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017909 {
17910 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17911 }
17912
17913 /*Notify UMAC*/
17914 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17915
Jeff Johnsone7245742012-09-05 17:12:55 -070017916 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017917}/*WDI_ProcessAddSessionBARsp*/
17918
17919/**
17920 @brief Process Add BA Rsp function (called when a response
17921 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017922
17923 @param pWDICtx: pointer to the WLAN DAL context
17924 pEventData: pointer to the event information structure
17925
Jeff Johnson295189b2012-06-20 16:38:30 -070017926 @see
17927 @return Result of the function call
17928*/
17929WDI_Status
17930WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017931(
Jeff Johnson295189b2012-06-20 16:38:30 -070017932 WDI_ControlBlockType* pWDICtx,
17933 WDI_EventInfoType* pEventData
17934)
17935{
17936 WDI_TriggerBARspCb wdiTriggerBARspCb;
17937
17938 tTriggerBARspParams* halTriggerBARsp;
17939 tTriggerBaRspCandidate* halBaCandidate;
17940 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17941 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17942 wpt_uint16 index;
17943 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017944 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17946
17947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017949 -------------------------------------------------------------------------*/
17950 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17951 ( NULL == pEventData->pEventData))
17952 {
17953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 }
17958
17959 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17960
17961 /*-------------------------------------------------------------------------
17962 Extract response and send it to UMAC
17963 -------------------------------------------------------------------------*/
17964 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17965
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017966 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17967
17968 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17969 {
17970 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017971 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017972 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017973
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017974 if(NULL == wdiTriggerBARsp)
17975 {
17976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017977 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017978 pWDICtx, pEventData, pEventData->pEventData);
17979 WDI_ASSERT(0);
17980 return WDI_STATUS_E_FAILURE;
17981 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017982
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017983 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17984
Jeff Johnson295189b2012-06-20 16:38:30 -070017985 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017986 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017987 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17988
17989 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17990 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17991
17992 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17993 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017994 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017995 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17996 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17997 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017998 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017999 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018000 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18002 }
18003 wdiTriggerBARspCandidate++;
18004 halBaCandidate++;
18005 }
18006 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070018007 else
18008 {
18009 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18010
18011 if(NULL == wdiTriggerBARsp)
18012 {
18013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080018014 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070018015 pWDICtx, pEventData, pEventData->pEventData);
18016 WDI_ASSERT(0);
18017 return WDI_STATUS_E_FAILURE;
18018 }
18019
18020 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18021
18022 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018023
18024 /*Notify UMAC*/
18025 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18026
18027 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018028 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018029}/*WDI_ProcessAddSessionBARsp*/
18030
18031/**
18032 @brief Process Update Beacon Params Rsp function (called when a response
18033 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018034
18035 @param pWDICtx: pointer to the WLAN DAL context
18036 pEventData: pointer to the event information structure
18037
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 @see
18039 @return Result of the function call
18040*/
18041WDI_Status
18042WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018043(
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 WDI_ControlBlockType* pWDICtx,
18045 WDI_EventInfoType* pEventData
18046)
18047{
18048 WDI_Status wdiStatus;
18049 eHalStatus halStatus;
18050 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18052
18053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 -------------------------------------------------------------------------*/
18056 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18057 ( NULL == pEventData->pEventData))
18058 {
18059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018063 }
18064
18065 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18066
18067 /*-------------------------------------------------------------------------
18068 Extract response and send it to UMAC
18069 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018070 wpalMemoryCopy( &halStatus,
18071 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 sizeof(halStatus));
18073
Jeff Johnsone7245742012-09-05 17:12:55 -070018074 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018075
18076 /*Notify UMAC*/
18077 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18078
Jeff Johnsone7245742012-09-05 17:12:55 -070018079 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018080}/*WDI_ProcessUpdateBeaconParamsRsp*/
18081
18082/**
18083 @brief Process Send Beacon template Rsp function (called when a response
18084 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018085
18086 @param pWDICtx: pointer to the WLAN DAL context
18087 pEventData: pointer to the event information structure
18088
Jeff Johnson295189b2012-06-20 16:38:30 -070018089 @see
18090 @return Result of the function call
18091*/
18092WDI_Status
18093WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018094(
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 WDI_ControlBlockType* pWDICtx,
18096 WDI_EventInfoType* pEventData
18097)
18098{
18099 WDI_Status wdiStatus;
18100 eHalStatus halStatus;
18101 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18103
18104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018106 -------------------------------------------------------------------------*/
18107 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18108 ( NULL == pEventData->pEventData))
18109 {
18110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018114 }
18115
18116 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18117
18118 /*-------------------------------------------------------------------------
18119 Extract response and send it to UMAC
18120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018121 wpalMemoryCopy( &halStatus,
18122 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018123 sizeof(halStatus));
18124
Jeff Johnsone7245742012-09-05 17:12:55 -070018125 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018126
18127 /*Notify UMAC*/
18128 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18129
Jeff Johnsone7245742012-09-05 17:12:55 -070018130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018131}/*WDI_ProcessSendBeaconParamsRsp*/
18132
Jeff Johnsone7245742012-09-05 17:12:55 -070018133
Jeff Johnson295189b2012-06-20 16:38:30 -070018134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018135 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018136 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018137
18138 @param pWDICtx: pointer to the WLAN DAL context
18139 pEventData: pointer to the event information structure
18140
Jeff Johnson295189b2012-06-20 16:38:30 -070018141 @see
18142 @return Result of the function call
18143*/
18144WDI_Status
18145WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018146(
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 WDI_ControlBlockType* pWDICtx,
18148 WDI_EventInfoType* pEventData
18149)
18150{
18151 WDI_Status wdiStatus;
18152 eHalStatus halStatus;
18153 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18155
18156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018158 -------------------------------------------------------------------------*/
18159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18160 ( NULL == pEventData->pEventData))
18161 {
18162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018166 }
18167
18168 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18169
18170 /*-------------------------------------------------------------------------
18171 Extract response and send it to UMAC
18172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018173 wpalMemoryCopy( &halStatus,
18174 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018175 sizeof(halStatus));
18176
Jeff Johnsone7245742012-09-05 17:12:55 -070018177 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018178
18179 /*Notify UMAC*/
18180 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18181
Jeff Johnsone7245742012-09-05 17:12:55 -070018182 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018183}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18184
18185 /**
18186 @brief Process Set Max Tx Power Rsp function (called when a response
18187 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018188
18189 @param pWDICtx: pointer to the WLAN DAL context
18190 pEventData: pointer to the event information structure
18191
Jeff Johnson295189b2012-06-20 16:38:30 -070018192 @see
18193 @return Result of the function call
18194*/
18195WDI_Status
18196WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018197(
Jeff Johnson295189b2012-06-20 16:38:30 -070018198 WDI_ControlBlockType* pWDICtx,
18199 WDI_EventInfoType* pEventData
18200)
18201{
18202 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018203
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018205
Jeff Johnson295189b2012-06-20 16:38:30 -070018206 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18208
18209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018211 -------------------------------------------------------------------------*/
18212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18213 ( NULL == pEventData->pEventData))
18214 {
18215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 }
18220
18221 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18222
18223 /*-------------------------------------------------------------------------
18224 Extract response and send it to UMAC
18225 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018226 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18227 pEventData->pEventData,
18228 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018229
18230 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18231 {
18232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18233 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 }
18236
Jeff Johnsone7245742012-09-05 17:12:55 -070018237 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018239 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018240
18241 /*Notify UMAC*/
18242 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18243
Jeff Johnsone7245742012-09-05 17:12:55 -070018244 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018245}
18246
schangd82195a2013-03-13 18:41:24 -070018247 /**
18248 @brief Process Set Tx Power Rsp function (called when a response
18249 is being received over the bus from HAL)
18250
18251 @param pWDICtx: pointer to the WLAN DAL context
18252 pEventData: pointer to the event information structure
18253
18254 @see
18255 @return Result of the function call
18256*/
18257WDI_Status
18258WDI_ProcessSetTxPowerRsp
18259(
18260 WDI_ControlBlockType* pWDICtx,
18261 WDI_EventInfoType* pEventData
18262)
18263{
18264 tSetTxPwrRspMsg halTxpowerrsp;
18265 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18266 WDA_SetTxPowerRspCb wdiReqStatusCb;
18267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18268
18269 /*-------------------------------------------------------------------------
18270 Sanity check
18271 -------------------------------------------------------------------------*/
18272 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18273 ( NULL == pEventData->pEventData))
18274 {
18275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18276 "%s: Invalid parameters", __func__);
18277 WDI_ASSERT(0);
18278 return WDI_STATUS_E_FAILURE;
18279 }
18280
18281 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18282
18283 /*-------------------------------------------------------------------------
18284 Extract response and send it to UMAC
18285 -------------------------------------------------------------------------*/
18286 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18287 pEventData->pEventData,
18288 sizeof(halTxpowerrsp.setTxPwrRspParams));
18289
18290 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18291 {
18292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18293 "Error status returned in Set Tx Power Response ");
18294 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18295 return WDI_STATUS_E_FAILURE;
18296 }
18297
18298 wdiSetTxPowerRspMsg.wdiStatus =
18299 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18300
18301 /*Notify UMAC*/
18302 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18303
18304 return WDI_STATUS_SUCCESS;
18305}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018306#ifdef FEATURE_WLAN_TDLS
18307/**
18308 @brief Process TDLS Link Establish Rsp function (called
18309 when a response is being received over the bus from HAL)
18310
18311 @param pWDICtx: pointer to the WLAN DAL context
18312 pEventData: pointer to the event information structure
18313
18314 @see
18315 @return Result of the function call
18316*/
18317WDI_Status
18318WDI_ProcessLinkEstablishReqRsp
18319(
18320 WDI_ControlBlockType* pWDICtx,
18321 WDI_EventInfoType* pEventData
18322)
18323{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018324 eHalStatus halStatus;
18325 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018326 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18327 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18328
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18330
18331 /*-------------------------------------------------------------------------
18332 Sanity check
18333 -------------------------------------------------------------------------*/
18334 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18335 ( NULL == pEventData->pEventData))
18336 {
18337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18338 "%s: Invalid parameters", __func__);
18339 WDI_ASSERT(0);
18340 return WDI_STATUS_E_FAILURE;
18341 }
18342
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018343 /*-------------------------------------------------------------------------
18344 Extract indication and send it to UMAC
18345 -------------------------------------------------------------------------*/
18346 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18347 pEventData->pEventData,
18348 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18349
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018350 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18351
18352 /*-------------------------------------------------------------------------
18353 Extract response and send it to UMAC
18354 -------------------------------------------------------------------------*/
18355 wpalMemoryCopy( &halStatus,
18356 pEventData->pEventData,
18357 sizeof(halStatus));
18358
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018359 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18360 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018361
18362 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018363 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018364
18365 return WDI_STATUS_SUCCESS;
18366}/*WDI_ProcessLinkEstablishReqRsp*/
18367#endif
schangd82195a2013-03-13 18:41:24 -070018368
Jeff Johnson295189b2012-06-20 16:38:30 -070018369/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018370 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018371 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018372
18373 @param pWDICtx: pointer to the WLAN DAL context
18374 pEventData: pointer to the event information structure
18375
Jeff Johnson295189b2012-06-20 16:38:30 -070018376 @see
18377 @return Result of the function call
18378*/
18379WDI_Status
18380WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018381(
Jeff Johnson295189b2012-06-20 16:38:30 -070018382 WDI_ControlBlockType* pWDICtx,
18383 WDI_EventInfoType* pEventData
18384)
18385{
18386 WDI_Status wdiStatus;
18387 eHalStatus halStatus;
18388 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18390
18391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018392 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018393 -------------------------------------------------------------------------*/
18394 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18395 ( NULL == pEventData->pEventData))
18396 {
18397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018401 }
18402
18403 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18404
18405 /*-------------------------------------------------------------------------
18406 Extract response and send it to UMAC
18407 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018408 wpalMemoryCopy( &halStatus,
18409 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018410 sizeof(halStatus));
18411
Jeff Johnsone7245742012-09-05 17:12:55 -070018412 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018413
18414 /*Notify UMAC*/
18415 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18416
Jeff Johnsone7245742012-09-05 17:12:55 -070018417 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018418}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018419/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018420 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018421 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018422
18423 @param pWDICtx: pointer to the WLAN DAL context
18424 pEventData: pointer to the event information structure
18425
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 @see
18427 @return Result of the function call
18428*/
18429WDI_Status
18430WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018431(
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 WDI_ControlBlockType* pWDICtx,
18433 WDI_EventInfoType* pEventData
18434)
18435{
18436 WDI_Status wdiStatus;
18437 eHalStatus halStatus;
18438 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018439 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18441
18442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018444 -------------------------------------------------------------------------*/
18445 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18446 ( NULL == pEventData->pEventData))
18447 {
18448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018452 }
18453
18454 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18455
18456 /*-------------------------------------------------------------------------
18457 Extract response and send it to UMAC
18458 -------------------------------------------------------------------------*/
18459 halStatus = *((eHalStatus*)pEventData->pEventData);
18460
Jeff Johnsone7245742012-09-05 17:12:55 -070018461 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018462
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018463 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18464 * Other module states are taken care by PMC.
18465 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18466 */
18467 if (wdiStatus != WDI_STATUS_SUCCESS) {
18468
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18470 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18471 halStatus);
18472 /* Call Back is not required as we are putting the DXE in FULL
18473 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018474 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18475
18476 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018478 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018479 WDI_ASSERT(0);
18480 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018481 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018482 /*Notify UMAC*/
18483 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18484
Jeff Johnsone7245742012-09-05 17:12:55 -070018485 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018486}/*WDI_ProcessEnterImpsRsp*/
18487
18488/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018489 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018491
18492 @param pWDICtx: pointer to the WLAN DAL context
18493 pEventData: pointer to the event information structure
18494
Jeff Johnson295189b2012-06-20 16:38:30 -070018495 @see
18496 @return Result of the function call
18497*/
18498WDI_Status
18499WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018500(
Jeff Johnson295189b2012-06-20 16:38:30 -070018501 WDI_ControlBlockType* pWDICtx,
18502 WDI_EventInfoType* pEventData
18503)
18504{
18505 WDI_Status wdiStatus;
18506 eHalStatus halStatus;
18507 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018508 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18510
18511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018512 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018513 -------------------------------------------------------------------------*/
18514 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18515 ( NULL == pEventData->pEventData))
18516 {
18517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018521 }
18522
18523 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18524
18525 /*-------------------------------------------------------------------------
18526 Extract response and send it to UMAC
18527 -------------------------------------------------------------------------*/
18528 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018529 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018530
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018531 if (halStatus != eHAL_STATUS_SUCCESS)
18532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18533 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18534
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018536 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18537 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18538 {
18539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018540 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018541 WDI_ASSERT(0);
18542 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 /*Notify UMAC*/
18544 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18545
Jeff Johnsone7245742012-09-05 17:12:55 -070018546 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018547}/*WDI_ProcessExitImpsRsp*/
18548
18549/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018550 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018551 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018552
18553 @param pWDICtx: pointer to the WLAN DAL context
18554 pEventData: pointer to the event information structure
18555
Jeff Johnson295189b2012-06-20 16:38:30 -070018556 @see
18557 @return Result of the function call
18558*/
18559WDI_Status
18560WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018561(
Jeff Johnson295189b2012-06-20 16:38:30 -070018562 WDI_ControlBlockType* pWDICtx,
18563 WDI_EventInfoType* pEventData
18564)
18565{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018566 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18567 tHalEnterBmpsRspParams halEnterBmpsRsp;
18568 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18569 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018570 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18572
18573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018575 -------------------------------------------------------------------------*/
18576 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18577 ( NULL == pEventData->pEventData))
18578 {
18579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018583 }
18584
Jeff Johnson295189b2012-06-20 16:38:30 -070018585 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018586 Extract response and send it to UMAC
18587 -------------------------------------------------------------------------*/
18588 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18589 {
18590 wpalMemoryCopy( &halEnterBmpsRsp,
18591 pEventData->pEventData,
18592 sizeof(halEnterBmpsRsp));
18593
18594 //Used to print debug message
18595 halStatus = halEnterBmpsRsp.status;
18596 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18597 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18598 }
18599 else
18600 {
18601 halStatus = *((eHalStatus*)pEventData->pEventData);
18602 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18603 }
18604
18605 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018606
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018607 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18608 * Other module states are taken care by PMC.
18609 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18610 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018611 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18612 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018613
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018615 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18616 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018617 /* Call Back is not required as we are putting the DXE in FULL
18618 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018619 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18620 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18621 {
18622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018623 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018624 WDI_ASSERT(0);
18625 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018626 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018627 }
18628
Jeff Johnson295189b2012-06-20 16:38:30 -070018629 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018630 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018631
Jeff Johnsone7245742012-09-05 17:12:55 -070018632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018633}/*WDI_ProcessEnterBmpsRsp*/
18634
18635/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018636 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018637 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018638
18639 @param pWDICtx: pointer to the WLAN DAL context
18640 pEventData: pointer to the event information structure
18641
Jeff Johnson295189b2012-06-20 16:38:30 -070018642 @see
18643 @return Result of the function call
18644*/
18645WDI_Status
18646WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018647(
Jeff Johnson295189b2012-06-20 16:38:30 -070018648 WDI_ControlBlockType* pWDICtx,
18649 WDI_EventInfoType* pEventData
18650)
18651{
Jeff Johnson295189b2012-06-20 16:38:30 -070018652 eHalStatus halStatus;
18653 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018654 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018655 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18656 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18658
18659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018661 -------------------------------------------------------------------------*/
18662 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18663 ( NULL == pEventData->pEventData))
18664 {
18665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 }
18670
18671 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18672
18673 /*-------------------------------------------------------------------------
18674 Extract response and send it to UMAC
18675 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018676
18677 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18678 {
18679 wpalMemoryCopy( &halExitBmpsRsp,
18680 pEventData->pEventData,
18681 sizeof(halExitBmpsRsp));
18682
18683 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18684 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18685 }
18686 else
18687 {
18688 halStatus = *((eHalStatus*)pEventData->pEventData);
18689 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18690 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018691
18692 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018693 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18694 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18695 {
18696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018697 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018698 WDI_ASSERT(0);
18699 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018700 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18701
18702 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018703 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018704
Jeff Johnsone7245742012-09-05 17:12:55 -070018705 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018706}/*WDI_ProcessExitBmpsRsp*/
18707
18708/**
18709 @brief Process Enter UAPSD Rsp function (called when a response
18710 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018711
18712 @param pWDICtx: pointer to the WLAN DAL context
18713 pEventData: pointer to the event information structure
18714
Jeff Johnson295189b2012-06-20 16:38:30 -070018715 @see
18716 @return Result of the function call
18717*/
18718WDI_Status
18719WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018720(
Jeff Johnson295189b2012-06-20 16:38:30 -070018721 WDI_ControlBlockType* pWDICtx,
18722 WDI_EventInfoType* pEventData
18723)
18724{
Jeff Johnson295189b2012-06-20 16:38:30 -070018725 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018726 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018727 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018728 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18729
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18731
18732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018733 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018734 -------------------------------------------------------------------------*/
18735 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18736 ( NULL == pEventData->pEventData))
18737 {
18738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018739 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018742 }
18743
18744 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18745
18746 /*-------------------------------------------------------------------------
18747 Extract response and send it to UMAC
18748 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018749 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18750 {
18751 wpalMemoryCopy( &halEnterUapsdRsp,
18752 pEventData->pEventData,
18753 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018754
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018755 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18756 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18757 }
18758 else
18759 {
18760 halStatus = *((eHalStatus*)pEventData->pEventData);
18761 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18762 }
18763
18764 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018765 {
18766 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18767 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18768 // the traffic to decide when to suspend the trigger frames when there is no traffic
18769 // activity on the trigger enabled ACs
18770 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18771
18772#ifdef WLAN_PERF
18773 // Increment the BD signature to refresh the fast path BD utilization
18774 pWDICtx->uBdSigSerialNum++;
18775#endif
18776 }
18777
18778 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018779 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018780
Jeff Johnsone7245742012-09-05 17:12:55 -070018781 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018782}/*WDI_ProcessEnterUapsdRsp*/
18783
18784/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018785 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018786 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018787
18788 @param pWDICtx: pointer to the WLAN DAL context
18789 pEventData: pointer to the event information structure
18790
Jeff Johnson295189b2012-06-20 16:38:30 -070018791 @see
18792 @return Result of the function call
18793*/
18794WDI_Status
18795WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018796(
Jeff Johnson295189b2012-06-20 16:38:30 -070018797 WDI_ControlBlockType* pWDICtx,
18798 WDI_EventInfoType* pEventData
18799)
18800{
Jeff Johnson295189b2012-06-20 16:38:30 -070018801 eHalStatus halStatus;
18802 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018803 tHalExitUapsdRspParams halExitUapsdRsp;
18804 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18806
18807 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018808 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018809 -------------------------------------------------------------------------*/
18810 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18811 ( NULL == pEventData->pEventData))
18812 {
18813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018814 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018817 }
18818
18819 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18820
18821 /*-------------------------------------------------------------------------
18822 Extract response and send it to UMAC
18823 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018824 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18825 {
18826 wpalMemoryCopy( &halExitUapsdRsp,
18827 pEventData->pEventData,
18828 sizeof(halExitUapsdRsp));
18829
18830 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18831 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18832 }
18833 else
18834 {
18835 halStatus = *((eHalStatus*)pEventData->pEventData);
18836 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18837 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018838 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18839 // directly instead of the FW WQ.
18840 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18841
18842#ifdef WLAN_PERF
18843 // Increment the BD signature to refresh the fast path BD utilization
18844 pWDICtx->uBdSigSerialNum++;
18845#endif
18846
18847 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018848 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018849
Jeff Johnsone7245742012-09-05 17:12:55 -070018850 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018851}/*WDI_ProcessExitUapsdRsp*/
18852
18853/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018854 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018855 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018856
18857 @param pWDICtx: pointer to the WLAN DAL context
18858 pEventData: pointer to the event information structure
18859
Jeff Johnson295189b2012-06-20 16:38:30 -070018860 @see
18861 @return Result of the function call
18862*/
18863WDI_Status
18864WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018865(
Jeff Johnson295189b2012-06-20 16:38:30 -070018866 WDI_ControlBlockType* pWDICtx,
18867 WDI_EventInfoType* pEventData
18868)
18869{
18870 WDI_Status wdiStatus;
18871 eHalStatus halStatus;
18872 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18874
18875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018877 -------------------------------------------------------------------------*/
18878 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18879 ( NULL == pEventData->pEventData))
18880 {
18881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018882 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018883 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018885 }
18886
18887 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18888
18889 /*-------------------------------------------------------------------------
18890 Extract response and send it to UMAC
18891 -------------------------------------------------------------------------*/
18892 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018893 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018894
18895 /*Notify UMAC*/
18896 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18897
Jeff Johnsone7245742012-09-05 17:12:55 -070018898 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018899}/*WDI_ProcessSetUapsdAcParamsRsp*/
18900
18901/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018902 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018903 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018904
18905 @param pWDICtx: pointer to the WLAN DAL context
18906 pEventData: pointer to the event information structure
18907
Jeff Johnson295189b2012-06-20 16:38:30 -070018908 @see
18909 @return Result of the function call
18910*/
18911WDI_Status
18912WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018913(
Jeff Johnson295189b2012-06-20 16:38:30 -070018914 WDI_ControlBlockType* pWDICtx,
18915 WDI_EventInfoType* pEventData
18916)
18917{
18918 WDI_Status wdiStatus;
18919 eHalStatus halStatus;
18920 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18922
18923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018924 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018925 -------------------------------------------------------------------------*/
18926 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18927 ( NULL == pEventData->pEventData))
18928 {
18929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018930 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018931 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018932 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018933 }
18934
18935 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18936
18937 /*-------------------------------------------------------------------------
18938 Extract response and send it to UMAC
18939 -------------------------------------------------------------------------*/
18940 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018941 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018942
18943 /*Notify UMAC*/
18944 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18945
Jeff Johnsone7245742012-09-05 17:12:55 -070018946 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018947}/*WDI_ProcessUpdateUapsdParamsRsp*/
18948
18949/**
18950 @brief Process Configure RXP filter Rsp function (called when a
18951 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018952
18953 @param pWDICtx: pointer to the WLAN DAL context
18954 pEventData: pointer to the event information structure
18955
Jeff Johnson295189b2012-06-20 16:38:30 -070018956 @see
18957 @return Result of the function call
18958*/
18959WDI_Status
18960WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018961(
Jeff Johnson295189b2012-06-20 16:38:30 -070018962 WDI_ControlBlockType* pWDICtx,
18963 WDI_EventInfoType* pEventData
18964)
18965{
18966 WDI_Status wdiStatus;
18967 eHalStatus halStatus;
18968 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18970
18971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018972 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018973 -------------------------------------------------------------------------*/
18974 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18975 ( NULL == pEventData->pEventData))
18976 {
18977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018981 }
18982
18983 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18984
18985 /*-------------------------------------------------------------------------
18986 Extract response and send it to UMAC
18987 -------------------------------------------------------------------------*/
18988 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018989 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018990
18991 /*Notify UMAC*/
18992 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18993
Jeff Johnsone7245742012-09-05 17:12:55 -070018994 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018995}/*WDI_ProcessConfigureRxpFilterRsp*/
18996
18997/**
18998 @brief Process Set beacon filter Rsp function (called when a
18999 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019000
19001 @param pWDICtx: pointer to the WLAN DAL context
19002 pEventData: pointer to the event information structure
19003
Jeff Johnson295189b2012-06-20 16:38:30 -070019004 @see
19005 @return Result of the function call
19006*/
19007WDI_Status
19008WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019009(
Jeff Johnson295189b2012-06-20 16:38:30 -070019010 WDI_ControlBlockType* pWDICtx,
19011 WDI_EventInfoType* pEventData
19012)
19013{
19014 WDI_Status wdiStatus;
19015 eHalStatus halStatus;
19016 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19018
19019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019021 -------------------------------------------------------------------------*/
19022 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19023 ( NULL == pEventData->pEventData))
19024 {
19025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019029 }
19030
19031 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19032
19033 /*-------------------------------------------------------------------------
19034 Extract response and send it to UMAC
19035 -------------------------------------------------------------------------*/
19036 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019037 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019038
19039 /*Notify UMAC*/
19040 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19041
Jeff Johnsone7245742012-09-05 17:12:55 -070019042 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019043}/*WDI_ProcessSetBeaconFilterRsp*/
19044
19045/**
19046 @brief Process remove beacon filter Rsp function (called when a
19047 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019048
19049 @param pWDICtx: pointer to the WLAN DAL context
19050 pEventData: pointer to the event information structure
19051
Jeff Johnson295189b2012-06-20 16:38:30 -070019052 @see
19053 @return Result of the function call
19054*/
19055WDI_Status
19056WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019057(
Jeff Johnson295189b2012-06-20 16:38:30 -070019058 WDI_ControlBlockType* pWDICtx,
19059 WDI_EventInfoType* pEventData
19060)
19061{
19062 WDI_Status wdiStatus;
19063 eHalStatus halStatus;
19064 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19066
19067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019068 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019069 -------------------------------------------------------------------------*/
19070 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19071 ( NULL == pEventData->pEventData))
19072 {
19073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019074 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019077 }
19078
19079 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19080
19081 /*-------------------------------------------------------------------------
19082 Extract response and send it to UMAC
19083 -------------------------------------------------------------------------*/
19084 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019085 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019086
19087 /*Notify UMAC*/
19088 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19089
Jeff Johnsone7245742012-09-05 17:12:55 -070019090 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019091}/*WDI_ProcessRemBeaconFilterRsp*/
19092
19093/**
19094 @brief Process set RSSI thresholds Rsp function (called when a
19095 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019096
19097 @param pWDICtx: pointer to the WLAN DAL context
19098 pEventData: pointer to the event information structure
19099
Jeff Johnson295189b2012-06-20 16:38:30 -070019100 @see
19101 @return Result of the function call
19102*/
19103WDI_Status
19104WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019105(
Jeff Johnson295189b2012-06-20 16:38:30 -070019106 WDI_ControlBlockType* pWDICtx,
19107 WDI_EventInfoType* pEventData
19108)
19109{
19110 WDI_Status wdiStatus;
19111 eHalStatus halStatus;
19112 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19114
19115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019116 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019117 -------------------------------------------------------------------------*/
19118 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19119 ( NULL == pEventData->pEventData))
19120 {
19121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019122 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019123 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019124 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019125 }
19126
19127 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19128
19129 /*-------------------------------------------------------------------------
19130 Extract response and send it to UMAC
19131 -------------------------------------------------------------------------*/
19132 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019133 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019134
19135 /*Notify UMAC*/
19136 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19137
Jeff Johnsone7245742012-09-05 17:12:55 -070019138 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019139}/*WDI_ProcessSetRSSIThresoldsRsp*/
19140
19141/**
19142 @brief Process host offload Rsp function (called when a
19143 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019144
19145 @param pWDICtx: pointer to the WLAN DAL context
19146 pEventData: pointer to the event information structure
19147
Jeff Johnson295189b2012-06-20 16:38:30 -070019148 @see
19149 @return Result of the function call
19150*/
19151WDI_Status
19152WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019153(
Jeff Johnson295189b2012-06-20 16:38:30 -070019154 WDI_ControlBlockType* pWDICtx,
19155 WDI_EventInfoType* pEventData
19156)
19157{
19158 WDI_Status wdiStatus;
19159 eHalStatus halStatus;
19160 WDI_HostOffloadCb wdiHostOffloadCb;
19161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19162
19163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019165 -------------------------------------------------------------------------*/
19166 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19167 ( NULL == pEventData->pEventData))
19168 {
19169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019170 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019173 }
19174
19175 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19176
19177 /*-------------------------------------------------------------------------
19178 Extract response and send it to UMAC
19179 -------------------------------------------------------------------------*/
19180 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019181 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019182
19183 /*Notify UMAC*/
19184 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19185
Jeff Johnsone7245742012-09-05 17:12:55 -070019186 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019187}/*WDI_ProcessHostOffloadRsp*/
19188
19189/**
19190 @brief Process keep alive Rsp function (called when a
19191 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019192
19193 @param pWDICtx: pointer to the WLAN DAL context
19194 pEventData: pointer to the event information structure
19195
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 @see
19197 @return Result of the function call
19198*/
19199WDI_Status
19200WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019201(
Jeff Johnson295189b2012-06-20 16:38:30 -070019202 WDI_ControlBlockType* pWDICtx,
19203 WDI_EventInfoType* pEventData
19204)
19205{
19206 WDI_Status wdiStatus;
19207 eHalStatus halStatus;
19208 WDI_KeepAliveCb wdiKeepAliveCb;
19209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19211 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19212
19213
19214 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019215 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019216 -------------------------------------------------------------------------*/
19217 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19218 ( NULL == pEventData->pEventData))
19219 {
19220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019221 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019222 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019223 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 }
19225
Jeff Johnsone7245742012-09-05 17:12:55 -070019226 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19227
Jeff Johnson295189b2012-06-20 16:38:30 -070019228 /*-------------------------------------------------------------------------
19229 Extract response and send it to UMAC
19230 -------------------------------------------------------------------------*/
19231 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019232 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019233
19234 /*Notify UMAC*/
19235 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19236
Jeff Johnsone7245742012-09-05 17:12:55 -070019237 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019238}/*WDI_ProcessKeepAliveRsp*/
19239
19240/**
19241 @brief Process wowl add ptrn Rsp function (called when a
19242 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019243
19244 @param pWDICtx: pointer to the WLAN DAL context
19245 pEventData: pointer to the event information structure
19246
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 @see
19248 @return Result of the function call
19249*/
19250WDI_Status
19251WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019252(
Jeff Johnson295189b2012-06-20 16:38:30 -070019253 WDI_ControlBlockType* pWDICtx,
19254 WDI_EventInfoType* pEventData
19255)
19256{
Jeff Johnson295189b2012-06-20 16:38:30 -070019257 eHalStatus halStatus;
19258 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019259 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19260 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19261
Jeff Johnson295189b2012-06-20 16:38:30 -070019262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19263
19264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019265 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019266 -------------------------------------------------------------------------*/
19267 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19268 ( NULL == pEventData->pEventData))
19269 {
19270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019271 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019272 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019274 }
19275
19276 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19277
19278 /*-------------------------------------------------------------------------
19279 Extract response and send it to UMAC
19280 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019281 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19282 {
19283 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19284 pEventData->pEventData,
19285 sizeof(halAddWowlBcastPtrRsp));
19286
19287 wdiWowlAddBcPtrRsp.wdiStatus =
19288 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19289 }
19290 else
19291 {
19292 halStatus = *((eHalStatus*)pEventData->pEventData);
19293 wdiWowlAddBcPtrRsp.wdiStatus =
19294 WDI_HAL_2_WDI_STATUS(halStatus);
19295 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019296
19297 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019298 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019299
Jeff Johnsone7245742012-09-05 17:12:55 -070019300 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019301}/*WDI_ProcessWowlAddBcPtrnRsp*/
19302
19303/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019304 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019305 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019306
19307 @param pWDICtx: pointer to the WLAN DAL context
19308 pEventData: pointer to the event information structure
19309
Jeff Johnson295189b2012-06-20 16:38:30 -070019310 @see
19311 @return Result of the function call
19312*/
19313WDI_Status
19314WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019315(
Jeff Johnson295189b2012-06-20 16:38:30 -070019316 WDI_ControlBlockType* pWDICtx,
19317 WDI_EventInfoType* pEventData
19318)
19319{
Jeff Johnson295189b2012-06-20 16:38:30 -070019320 eHalStatus halStatus;
19321 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019322 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19323 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19325
19326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019328 -------------------------------------------------------------------------*/
19329 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19330 ( NULL == pEventData->pEventData))
19331 {
19332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019336 }
19337
19338 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19339
19340 /*-------------------------------------------------------------------------
19341 Extract response and send it to UMAC
19342 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019343 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19344 {
19345 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19346 pEventData->pEventData,
19347 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019348
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019349 wdiWowlDelBcstPtrRsp.wdiStatus =
19350 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19351 }
19352 else
19353 {
19354 halStatus = *((eHalStatus*)pEventData->pEventData);
19355 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19356 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019357 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019358 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019359
Jeff Johnsone7245742012-09-05 17:12:55 -070019360 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019361}/*WDI_ProcessWowlDelBcPtrnRsp*/
19362
19363/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019364 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019365 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019366
19367 @param pWDICtx: pointer to the WLAN DAL context
19368 pEventData: pointer to the event information structure
19369
Jeff Johnson295189b2012-06-20 16:38:30 -070019370 @see
19371 @return Result of the function call
19372*/
19373WDI_Status
19374WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019375(
Jeff Johnson295189b2012-06-20 16:38:30 -070019376 WDI_ControlBlockType* pWDICtx,
19377 WDI_EventInfoType* pEventData
19378)
19379{
Jeff Johnson295189b2012-06-20 16:38:30 -070019380 eHalStatus halStatus;
19381 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019382 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19383 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19385
19386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019388 -------------------------------------------------------------------------*/
19389 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19390 ( NULL == pEventData->pEventData))
19391 {
19392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019393 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019396 }
19397
19398 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19399
19400 /*-------------------------------------------------------------------------
19401 Extract response and send it to UMAC
19402 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019403 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19404 {
19405 wpalMemoryCopy( &halEnterWowlRspParams,
19406 (wpt_uint8*)pEventData->pEventData,
19407 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019408
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019409 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19410 wdiwowlEnterRsp.status =
19411 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19412 }
19413 else
19414 {
19415 halStatus = *((eHalStatus*)pEventData->pEventData);
19416 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19417 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019418 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019419 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019420
Jeff Johnsone7245742012-09-05 17:12:55 -070019421 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019422}/*WDI_ProcessWowlEnterRsp*/
19423
19424/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019425 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019426 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019427
19428 @param pWDICtx: pointer to the WLAN DAL context
19429 pEventData: pointer to the event information structure
19430
Jeff Johnson295189b2012-06-20 16:38:30 -070019431 @see
19432 @return Result of the function call
19433*/
19434WDI_Status
19435WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019436(
Jeff Johnson295189b2012-06-20 16:38:30 -070019437 WDI_ControlBlockType* pWDICtx,
19438 WDI_EventInfoType* pEventData
19439)
19440{
Jeff Johnson295189b2012-06-20 16:38:30 -070019441 eHalStatus halStatus;
19442 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019443 tHalExitWowlRspParams halExitWowlRspParams;
19444 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19445
Jeff Johnson295189b2012-06-20 16:38:30 -070019446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19447
19448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019450 -------------------------------------------------------------------------*/
19451 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19452 ( NULL == pEventData->pEventData))
19453 {
19454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019458 }
19459
19460 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19461
19462 /*-------------------------------------------------------------------------
19463 Extract response and send it to UMAC
19464 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019465 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19466 {
19467 wpalMemoryCopy( &halExitWowlRspParams,
19468 pEventData->pEventData,
19469 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019470
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019471 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19472 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19473
19474 }
19475 else
19476 {
19477 halStatus = *((eHalStatus*)pEventData->pEventData);
19478 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19479 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019480 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019481 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019482
Jeff Johnsone7245742012-09-05 17:12:55 -070019483 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019484}/*WDI_ProcessWowlExitRsp*/
19485
19486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019487 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 (called when a response is being received over the bus
19489 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019490
19491 @param pWDICtx: pointer to the WLAN DAL context
19492 pEventData: pointer to the event information structure
19493
Jeff Johnson295189b2012-06-20 16:38:30 -070019494 @see
19495 @return Result of the function call
19496*/
19497WDI_Status
19498WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019499(
Jeff Johnson295189b2012-06-20 16:38:30 -070019500 WDI_ControlBlockType* pWDICtx,
19501 WDI_EventInfoType* pEventData
19502)
19503{
19504 WDI_Status wdiStatus;
19505 eHalStatus halStatus;
19506 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19508
19509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019511 -------------------------------------------------------------------------*/
19512 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19513 ( NULL == pEventData->pEventData))
19514 {
19515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019519 }
19520
19521 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19522
19523 /*-------------------------------------------------------------------------
19524 Extract response and send it to UMAC
19525 -------------------------------------------------------------------------*/
19526 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019527 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019528
19529 /*Notify UMAC*/
19530 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19531
Jeff Johnsone7245742012-09-05 17:12:55 -070019532 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019533}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19534
19535
19536/**
19537 @brief Process Nv download(called when a response
19538 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019539
19540 @param pWDICtx: pointer to the WLAN DAL context
19541 pEventData: pointer to the event information structure
19542
Jeff Johnson295189b2012-06-20 16:38:30 -070019543 @see
19544 @return Result of the function call
19545*/
19546WDI_Status
19547WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019548(
Jeff Johnson295189b2012-06-20 16:38:30 -070019549 WDI_ControlBlockType* pWDICtx,
19550 WDI_EventInfoType* pEventData
19551)
19552{
19553
19554 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19555 tHalNvImgDownloadRspParams halNvDownloadRsp;
19556 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19557
19558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019560 -------------------------------------------------------------------------*/
19561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19562 ( NULL == pEventData->pEventData))
19563 {
19564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019568 }
19569
19570 /*-------------------------------------------------------------------------
19571 Extract response and send it to UMAC
19572 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019573 wpalMemoryCopy( &halNvDownloadRsp,
19574 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 sizeof(halNvDownloadRsp));
19576
19577 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19578
19579 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019580 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19581 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 {
19583 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019584 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019585 }
19586 else
19587 {
19588 /*Reset the Nv related global information in WDI context information */
19589 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19590 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19591 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19592 /*call WDA callback function for last fragment */
19593 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19594 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19595 }
19596
Jeff Johnsone7245742012-09-05 17:12:55 -070019597 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019598}
19599#ifdef WLAN_FEATURE_VOWIFI_11R
19600/**
19601 @brief Process Add TSpec Rsp function (called when a response
19602 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_ProcessAggrAddTSpecRsp
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 tAggrAddTsRspParams aggrAddTsRsp;
19619 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
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 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19635
19636 /*-------------------------------------------------------------------------
19637 Extract response and send it to UMAC
19638 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019639 wpalMemoryCopy( &aggrAddTsRsp,
19640 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019641 sizeof(aggrAddTsRsp));
19642
19643 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019644 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019645
19646 /*Notify UMAC*/
19647 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19648
Jeff Johnsone7245742012-09-05 17:12:55 -070019649 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019650}/*WDI_ProcessAddTSpecRsp*/
19651#endif /* WLAN_FEATURE_VOWIFI_11R */
19652
19653/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019654 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019656
19657 @param pWDICtx: pointer to the WLAN DAL context
19658 pEventData: pointer to the event information structure
19659
Jeff Johnson295189b2012-06-20 16:38:30 -070019660 @see
19661 @return Result of the function call
19662*/
19663WDI_Status
19664WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019665(
Jeff Johnson295189b2012-06-20 16:38:30 -070019666 WDI_ControlBlockType* pWDICtx,
19667 WDI_EventInfoType* pEventData
19668)
19669{
19670 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19671 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19672 tHalHostResumeRspParams hostResumeRspMsg;
19673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19674
19675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019676 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019677 -------------------------------------------------------------------------*/
19678 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19679 ( NULL == pEventData->pEventData))
19680 {
19681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019685 }
19686
19687 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19688
19689 /*-------------------------------------------------------------------------
19690 Extract response and send it to UMAC
19691 -------------------------------------------------------------------------*/
19692
Jeff Johnsone7245742012-09-05 17:12:55 -070019693 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019694 (wpt_uint8*)pEventData->pEventData,
19695 sizeof(hostResumeRspMsg));
19696
Jeff Johnsone7245742012-09-05 17:12:55 -070019697 wdiResumeRspParams.wdiStatus =
19698 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019699
19700 /*Notify UMAC*/
19701 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19702
19703 return WDI_STATUS_SUCCESS;
19704}
19705
19706/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019707 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019708 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019709
19710 @param pWDICtx: pointer to the WLAN DAL context
19711 pEventData: pointer to the event information structure
19712
Jeff Johnson295189b2012-06-20 16:38:30 -070019713 @see
19714 @return Result of the function call
19715*/
19716WDI_Status
19717WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019718(
Jeff Johnson295189b2012-06-20 16:38:30 -070019719 WDI_ControlBlockType* pWDICtx,
19720 WDI_EventInfoType* pEventData
19721)
19722{
19723 WDI_Status wdiStatus;
19724 eHalStatus halStatus;
19725 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19727
19728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019729 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019730 -------------------------------------------------------------------------*/
19731 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19732 ( NULL == pEventData->pEventData))
19733 {
19734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019738 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019739
19740 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019741
19742 /*-------------------------------------------------------------------------
19743 Extract response and send it to UMAC
19744 -------------------------------------------------------------------------*/
19745 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019746 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019747
19748 /*Notify UMAC*/
19749 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19750
Jeff Johnsone7245742012-09-05 17:12:55 -070019751 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019752}/*WDI_ProcessSetTxPerTrackingRsp*/
19753
19754/*==========================================================================
19755 Indications from HAL
19756 ==========================================================================*/
19757/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019758 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019759 indication of this kind is being received over the bus
19760 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019761
19762 @param pWDICtx: pointer to the WLAN DAL context
19763 pEventData: pointer to the event information structure
19764
Jeff Johnson295189b2012-06-20 16:38:30 -070019765 @see
19766 @return Result of the function call
19767*/
19768WDI_Status
19769WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019770(
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 WDI_ControlBlockType* pWDICtx,
19772 WDI_EventInfoType* pEventData
19773)
19774{
19775 WDI_LowLevelIndType wdiInd;
19776 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19778
19779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019780 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019781 -------------------------------------------------------------------------*/
19782 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19783 ( NULL == pEventData->pEventData))
19784 {
19785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019787 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019789 }
19790
19791 /*-------------------------------------------------------------------------
19792 Extract indication and send it to UMAC
19793 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019794 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19795 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 sizeof(tHalRSSINotification));
19797
19798 /*Fill in the indication parameters*/
19799 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19800 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19801 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19802 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19803 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19804 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19805 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19806 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19807 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19808 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19809 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19810 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19811 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019812 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19813 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019814
ltimariu034f7d62013-01-24 18:54:33 -080019815 if ( pWDICtx->wdiLowLevelIndCB )
19816 {
19817 /*Notify UMAC of indication*/
19818 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19819 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019820
19821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019822}/*WDI_ProcessLowRSSIInd*/
19823
19824
19825/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019826 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019827 an indication of this kind is being received over the
19828 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019829
19830 @param pWDICtx: pointer to the WLAN DAL context
19831 pEventData: pointer to the event information structure
19832
Jeff Johnson295189b2012-06-20 16:38:30 -070019833 @see
19834 @return Result of the function call
19835*/
19836WDI_Status
19837WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019838(
Jeff Johnson295189b2012-06-20 16:38:30 -070019839 WDI_ControlBlockType* pWDICtx,
19840 WDI_EventInfoType* pEventData
19841)
19842{
19843 WDI_Status wdiStatus;
19844 eHalStatus halStatus;
19845 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019846 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19848
19849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019850 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019851 -------------------------------------------------------------------------*/
19852 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19853 ( NULL == pEventData->pEventData))
19854 {
19855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019856 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019857 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019859 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019860 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019861 /*-------------------------------------------------------------------------
19862 Extract indication and send it to UMAC
19863 -------------------------------------------------------------------------*/
19864 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19865 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019866 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019867
19868 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019869 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019870 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19871 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019872 if ( pWDICtx->wdiLowLevelIndCB )
19873 {
19874 /*Notify UMAC*/
19875 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19876 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019877
19878 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019879}/*WDI_ProcessMissedBeaconInd*/
19880
19881
19882/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019883 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019884 an indication of this kind is being received over the
19885 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019886
19887 @param pWDICtx: pointer to the WLAN DAL context
19888 pEventData: pointer to the event information structure
19889
Jeff Johnson295189b2012-06-20 16:38:30 -070019890 @see
19891 @return Result of the function call
19892*/
19893WDI_Status
19894WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019895(
Jeff Johnson295189b2012-06-20 16:38:30 -070019896 WDI_ControlBlockType* pWDICtx,
19897 WDI_EventInfoType* pEventData
19898)
19899{
19900 WDI_Status wdiStatus;
19901 eHalStatus halStatus;
19902 WDI_LowLevelIndType wdiInd;
19903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19904
19905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 -------------------------------------------------------------------------*/
19908 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19909 ( NULL == pEventData->pEventData))
19910 {
19911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019912 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 }
19916
19917 /*-------------------------------------------------------------------------
19918 Extract indication and send it to UMAC
19919 -------------------------------------------------------------------------*/
19920 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19921 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019922 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019923
19924 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019925 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019926 /* ! TO DO - fill in from HAL struct:
19927 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19928
ltimariu034f7d62013-01-24 18:54:33 -080019929 if ( pWDICtx->wdiLowLevelIndCB )
19930 {
19931 /*Notify UMAC*/
19932 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19933 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019934
19935 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019936}/*WDI_ProcessUnkAddrFrameInd*/
19937
19938
19939/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019940 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 indication of this kind is being received over the bus
19942 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019943
19944 @param pWDICtx: pointer to the WLAN DAL context
19945 pEventData: pointer to the event information structure
19946
Jeff Johnson295189b2012-06-20 16:38:30 -070019947 @see
19948 @return Result of the function call
19949*/
19950WDI_Status
19951WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019952(
Jeff Johnson295189b2012-06-20 16:38:30 -070019953 WDI_ControlBlockType* pWDICtx,
19954 WDI_EventInfoType* pEventData
19955)
19956{
19957 WDI_LowLevelIndType wdiInd;
19958 tpSirMicFailureInd pHalMicFailureInd;
19959
19960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19961
19962 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019963 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019964 -------------------------------------------------------------------------*/
19965 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19966 ( NULL == pEventData->pEventData))
19967 {
19968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019969 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019970 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019972 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019973
Jeff Johnson295189b2012-06-20 16:38:30 -070019974 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19975 /*-------------------------------------------------------------------------
19976 Extract indication and send it to UMAC
19977 -------------------------------------------------------------------------*/
19978
19979 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019980 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019981 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19982 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19983 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19984 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19985 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19986 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19987 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19988 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019989 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019990 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019991 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019992 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019993 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019994 pHalMicFailureInd->info.keyId;
19995 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19996 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19997 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19998 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019999
20000 if ( pWDICtx->wdiLowLevelIndCB )
20001 {
20002 /*Notify UMAC*/
20003 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20004 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020005
20006 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020007}/*WDI_ProcessMicFailureInd*/
20008
20009
20010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020011 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 an indication of this kind is being received over the
20013 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020014
20015 @param pWDICtx: pointer to the WLAN DAL context
20016 pEventData: pointer to the event information structure
20017
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 @see
20019 @return Result of the function call
20020*/
20021WDI_Status
20022WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020023(
Jeff Johnson295189b2012-06-20 16:38:30 -070020024 WDI_ControlBlockType* pWDICtx,
20025 WDI_EventInfoType* pEventData
20026)
20027{
20028 WDI_Status wdiStatus;
20029 eHalStatus halStatus;
20030 WDI_LowLevelIndType wdiInd;
20031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20032
20033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020035 -------------------------------------------------------------------------*/
20036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20037 ( NULL == pEventData->pEventData))
20038 {
20039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020043 }
20044
20045 /*-------------------------------------------------------------------------
20046 Extract indication and send it to UMAC
20047 -------------------------------------------------------------------------*/
20048
20049 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20050 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020051 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020052
20053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20054 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020055
Jeff Johnson295189b2012-06-20 16:38:30 -070020056 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020057 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20058 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020059
ltimariu034f7d62013-01-24 18:54:33 -080020060 if ( pWDICtx->wdiLowLevelIndCB )
20061 {
20062 /*Notify UMAC*/
20063 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20064 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020065
20066 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020067}/*WDI_ProcessFatalErrorInd*/
20068
20069/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020070 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 an indication of this kind is being received over the
20072 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020073
20074 @param pWDICtx: pointer to the WLAN DAL context
20075 pEventData: pointer to the event information structure
20076
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 @see
20078 @return Result of the function call
20079*/
20080WDI_Status
20081WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020082(
Jeff Johnson295189b2012-06-20 16:38:30 -070020083 WDI_ControlBlockType* pWDICtx,
20084 WDI_EventInfoType* pEventData
20085)
20086{
20087 tDeleteStaContextParams halDelSTACtx;
20088 WDI_LowLevelIndType wdiInd;
20089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20090
20091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020093 -------------------------------------------------------------------------*/
20094 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20095 ( NULL == pEventData->pEventData))
20096 {
20097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020101 }
20102
20103 /*-------------------------------------------------------------------------
20104 Extract indication and send it to UMAC
20105 -------------------------------------------------------------------------*/
20106
20107 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020108 wpalMemoryCopy( &halDelSTACtx,
20109 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020110 sizeof(halDelSTACtx));
20111
20112 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020113 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020114
20115 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20116 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20117 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20118 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20119
Jeff Johnsone7245742012-09-05 17:12:55 -070020120 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020121 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020123 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020124 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20125 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020126
ltimariu034f7d62013-01-24 18:54:33 -080020127 if ( pWDICtx->wdiLowLevelIndCB )
20128 {
20129 /*Notify UMAC*/
20130 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20131 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020132
20133 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020134}/*WDI_ProcessDelSTAInd*/
20135
20136/**
20137*@brief Process Coex Indication function (called when
20138 an indication of this kind is being received over the
20139 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020140
20141 @param pWDICtx: pointer to the WLAN DAL context
20142 pEventData: pointer to the event information structure
20143
Jeff Johnson295189b2012-06-20 16:38:30 -070020144 @see
20145 @return Result of the function call
20146*/
20147WDI_Status
20148WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020149(
Jeff Johnson295189b2012-06-20 16:38:30 -070020150 WDI_ControlBlockType* pWDICtx,
20151 WDI_EventInfoType* pEventData
20152)
20153{
20154 WDI_LowLevelIndType wdiInd;
20155 tCoexIndMsg halCoexIndMsg;
20156 wpt_uint32 index;
20157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20158
20159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020161 -------------------------------------------------------------------------*/
20162 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20163 ( NULL == pEventData->pEventData ))
20164 {
20165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020167 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020169 }
20170
20171 /*-------------------------------------------------------------------------
20172 Extract indication and send it to UMAC
20173 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020174 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20175 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020176 sizeof(halCoexIndMsg.coexIndParams) );
20177
20178 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020179 wdiInd.wdiIndicationType = WDI_COEX_IND;
20180 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020181 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20182 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020183 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020184 }
20185
20186 // DEBUG
20187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20188 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020189 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20190 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20191 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20192 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20193 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020194
ltimariu034f7d62013-01-24 18:54:33 -080020195 if ( pWDICtx->wdiLowLevelIndCB )
20196 {
20197 /*Notify UMAC*/
20198 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20199 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020200
20201 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020202}/*WDI_ProcessCoexInd*/
20203
20204/**
20205*@brief Process Tx Complete Indication function (called when
20206 an indication of this kind is being received over the
20207 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020208
20209 @param pWDICtx: pointer to the WLAN DAL context
20210 pEventData: pointer to the event information structure
20211
Jeff Johnson295189b2012-06-20 16:38:30 -070020212 @see
20213 @return Result of the function call
20214*/
20215WDI_Status
20216WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020217(
Jeff Johnson295189b2012-06-20 16:38:30 -070020218 WDI_ControlBlockType* pWDICtx,
20219 WDI_EventInfoType* pEventData
20220)
20221{
20222 WDI_LowLevelIndType wdiInd;
20223 tTxComplIndMsg halTxComplIndMsg;
20224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20225
20226 /*-------------------------------------------------------------------------
20227 Sanity check
20228 -------------------------------------------------------------------------*/
20229 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20230 ( NULL == pEventData->pEventData ))
20231 {
20232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020234 WDI_ASSERT( 0 );
20235 return WDI_STATUS_E_FAILURE;
20236 }
20237
20238 /*-------------------------------------------------------------------------
20239 Extract indication and send it to UMAC
20240 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020241 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20242 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020243 sizeof(halTxComplIndMsg.txComplParams) );
20244
20245 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020246 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20247 wdiInd.wdiIndicationData.tx_complete_status
20248 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020249
ltimariu034f7d62013-01-24 18:54:33 -080020250 if ( pWDICtx->wdiLowLevelIndCB )
20251 {
20252 /*Notify UMAC*/
20253 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20254 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020255
20256 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020257}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020258#ifdef FEATURE_WLAN_TDLS
20259/**
20260*@brief Process TDLS Indication function (called when
20261 an indication of this kind is being received over the
20262 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020263
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020264 @param pWDICtx: pointer to the WLAN DAL context
20265 pEventData: pointer to the event information structure
20266
20267 @see
20268 @return Result of the function call
20269*/
20270WDI_Status
20271WDI_ProcessTdlsInd
20272(
20273 WDI_ControlBlockType* pWDICtx,
20274 WDI_EventInfoType* pEventData
20275)
20276{
20277 WDI_LowLevelIndType wdiInd;
20278 tTdlsIndMsg halTdlsIndMsg;
20279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20280
20281 /*-------------------------------------------------------------------------
20282 Sanity check
20283 -------------------------------------------------------------------------*/
20284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20285 ( NULL == pEventData->pEventData ))
20286 {
20287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20288 "%s: Invalid parameters", __func__);
20289 WDI_ASSERT( 0 );
20290 return WDI_STATUS_E_FAILURE;
20291 }
20292
20293 /*-------------------------------------------------------------------------
20294 Extract indication and send it to UMAC
20295 -------------------------------------------------------------------------*/
20296 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20297 pEventData->pEventData,
20298 sizeof(halTdlsIndMsg.tdlsIndParams) );
20299
20300 /*Fill in the indication parameters*/
20301 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20302
20303 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20304 = halTdlsIndMsg.tdlsIndParams.status;
20305
20306 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20307 = halTdlsIndMsg.tdlsIndParams.staIdx;
20308
20309 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20310 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20311
20312 /*Notify UMAC*/
20313 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20314
20315 return WDI_STATUS_SUCCESS;
20316}/*WDI_ProcessTdlsInd*/
20317#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020318/**
Viral Modi9dc288a2012-12-10 13:09:21 -080020319*@brief Process Noa Start Indication function (called when
20320 an indication of this kind is being received over the
20321 bus from HAL)
20322
20323 @param pWDICtx: pointer to the WLAN DAL context
20324 pEventData: pointer to the event information structure
20325
20326 @see
20327 @return Result of the function call
20328*/
20329WDI_Status
20330WDI_ProcessP2pNoaStartInd
20331(
20332 WDI_ControlBlockType* pWDICtx,
20333 WDI_EventInfoType* pEventData
20334)
20335{
20336 WDI_LowLevelIndType wdiInd;
20337 tNoaStartIndMsg halNoaStartIndMsg;
20338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20339
20340 /*-------------------------------------------------------------------------
20341 Sanity check
20342 -------------------------------------------------------------------------*/
20343 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20344 ( NULL == pEventData->pEventData ))
20345 {
20346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20347 "%s: Invalid parameters", __func__);
20348 WDI_ASSERT( 0 );
20349 return WDI_STATUS_E_FAILURE;
20350 }
20351
20352 /*-------------------------------------------------------------------------
20353 Extract indication and send it to UMAC
20354 -------------------------------------------------------------------------*/
20355 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20356 pEventData->pEventData,
20357 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20358
20359 /*Fill in the indication parameters*/
20360 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20361
20362 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20363 = halNoaStartIndMsg.noaStartIndParams.status;
20364
20365 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20366 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20367
20368 /*Notify UMAC*/
20369 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20370
20371 return WDI_STATUS_SUCCESS;
20372}/*WDI_ProcessNoaAttrInd*/
20373
20374/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020375*@brief Process Noa Attr Indication function (called when
20376 an indication of this kind is being received over the
20377 bus from HAL)
20378
20379 @param pWDICtx: pointer to the WLAN DAL context
20380 pEventData: pointer to the event information structure
20381
20382 @see
20383 @return Result of the function call
20384*/
20385WDI_Status
20386WDI_ProcessP2pNoaAttrInd
20387(
20388 WDI_ControlBlockType* pWDICtx,
20389 WDI_EventInfoType* pEventData
20390)
20391{
20392 WDI_LowLevelIndType wdiInd;
20393 tNoaAttrIndMsg halNoaAttrIndMsg;
20394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20395
20396 /*-------------------------------------------------------------------------
20397 Sanity check
20398 -------------------------------------------------------------------------*/
20399 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20400 ( NULL == pEventData->pEventData ))
20401 {
20402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020403 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020404 WDI_ASSERT( 0 );
20405 return WDI_STATUS_E_FAILURE;
20406 }
20407
20408 /*-------------------------------------------------------------------------
20409 Extract indication and send it to UMAC
20410 -------------------------------------------------------------------------*/
20411 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20412 pEventData->pEventData,
20413 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20414
20415 /*Fill in the indication parameters*/
20416 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020417
Jeff Johnson295189b2012-06-20 16:38:30 -070020418 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20419 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020420
Jeff Johnson295189b2012-06-20 16:38:30 -070020421 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20422 = halNoaAttrIndMsg.noaAttrIndParams.index;
20423 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20424 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20425 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20426 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020427
Jeff Johnson295189b2012-06-20 16:38:30 -070020428 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20429 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20430 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20431 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20432 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20433 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20434 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20435 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020436
Jeff Johnson295189b2012-06-20 16:38:30 -070020437 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20438 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20439 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20440 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20441 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20442 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20443 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20444 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20445
ltimariu034f7d62013-01-24 18:54:33 -080020446 if ( pWDICtx->wdiLowLevelIndCB )
20447 {
20448 /*Notify UMAC*/
20449 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20450 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020451
20452 return WDI_STATUS_SUCCESS;
20453}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020454
20455/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020456 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020457 an indication of this kind is being received over the
20458 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020459
20460 @param pWDICtx: pointer to the WLAN DAL context
20461 pEventData: pointer to the event information structure
20462
Jeff Johnson295189b2012-06-20 16:38:30 -070020463 @see
20464 @return Result of the function call
20465*/
20466WDI_Status
20467WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020468(
Jeff Johnson295189b2012-06-20 16:38:30 -070020469 WDI_ControlBlockType* pWDICtx,
20470 WDI_EventInfoType* pEventData
20471)
20472{
20473 WDI_LowLevelIndType wdiInd;
20474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020475
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 /*-------------------------------------------------------------------------
20477 Extract indication and send it to UMAC
20478 -------------------------------------------------------------------------*/
20479 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020480 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20481
ltimariu034f7d62013-01-24 18:54:33 -080020482 if ( pWDICtx->wdiLowLevelIndCB )
20483 {
20484 /*Notify UMAC*/
20485 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20486 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020487
Jeff Johnsone7245742012-09-05 17:12:55 -070020488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020489}/*WDI_ProcessTxPerHitInd*/
20490
Jeff Johnson295189b2012-06-20 16:38:30 -070020491/**
Yue Ma365933a2013-08-14 15:59:08 -070020492 @brief Process Periodic Tx Pattern Fw Indication function
20493
20494 @param pWDICtx: pointer to the WLAN DAL context
20495 pEventData: pointer to the event information structure
20496
20497 @see
20498 @return Result of the function call
20499*/
20500WDI_Status
20501WDI_ProcessPeriodicTxPtrnFwInd
20502(
20503 WDI_ControlBlockType* pWDICtx,
20504 WDI_EventInfoType* pEventData
20505)
20506{
20507 WDI_LowLevelIndType wdiInd;
20508
20509 /*-------------------------------------------------------------------------
20510 Sanity check
20511 -------------------------------------------------------------------------*/
20512 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20513 (NULL == pEventData->pEventData))
20514 {
20515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20516 "%s: Invalid parameters", __func__);
20517 WDI_ASSERT(0);
20518 return WDI_STATUS_E_FAILURE;
20519 }
20520
20521 /*-------------------------------------------------------------------------
20522 Extract indication and send it to UMAC
20523 -------------------------------------------------------------------------*/
20524 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20525 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20526 sizeof(tHalPeriodicTxPtrnFwInd));
20527
20528 if (pWDICtx->wdiLowLevelIndCB)
20529 {
20530 /*Notify UMAC*/
20531 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20532 }
20533
20534 return WDI_STATUS_SUCCESS;
20535}
20536
20537/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020538 @brief WDI_ProcessFTMCommandReq
20539 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020540
20541 @param pWDICtx: pointer to the WLAN DAL context
20542 pEventData: pointer to the event information structure
20543
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 @see
20545 @return Result of the function call
20546*/
20547WDI_Status
20548WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020549(
Jeff Johnson295189b2012-06-20 16:38:30 -070020550 WDI_ControlBlockType* pWDICtx,
20551 WDI_EventInfoType* pEventData
20552)
20553{
20554 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20555 wpt_uint8 *ftmCommandBuffer = NULL;
20556 wpt_uint16 dataOffset;
20557 wpt_uint16 bufferSize;
20558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020560 -------------------------------------------------------------------------*/
20561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20562 ( NULL == pEventData->pEventData))
20563
20564 {
20565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020566 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 }
20570
20571 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20572
20573 /* Get MSG Buffer */
20574 WDI_GetMessageBuffer(pWDICtx,
20575 WDI_FTM_CMD_REQ,
20576 ftmCommandReq->bodyLength,
20577 &ftmCommandBuffer,
20578 &dataOffset,
20579 &bufferSize);
20580
20581 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20582 ftmCommandReq->FTMCommandBody,
20583 ftmCommandReq->bodyLength);
20584
20585 /* Send MSG */
20586 return WDI_SendMsg(pWDICtx,
20587 ftmCommandBuffer,
20588 bufferSize,
20589 pEventData->pCBfnc,
20590 pEventData->pUserData,
20591 WDI_FTM_CMD_RESP);
20592}
20593
20594/**
20595 @brief WDI_ProcessFTMCommandRsp
20596 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020597
20598 @param pWDICtx: pointer to the WLAN DAL context
20599 pEventData: pointer to the event information structure
20600
Jeff Johnson295189b2012-06-20 16:38:30 -070020601 @see
20602 @return Result of the function call
20603*/
20604WDI_Status
20605WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020606(
Jeff Johnson295189b2012-06-20 16:38:30 -070020607 WDI_ControlBlockType* pWDICtx,
20608 WDI_EventInfoType* pEventData
20609)
20610{
20611 WDI_FTMCommandRspCb ftmCMDRspCb;
20612 tProcessPttRspParams *ftmCMDRspData = NULL;
20613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20614
20615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020616 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 -------------------------------------------------------------------------*/
20618 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20619 ( NULL == pEventData->pEventData))
20620 {
20621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020622 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020625 }
20626
20627 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20628
20629 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20630
Jeff Johnsone7245742012-09-05 17:12:55 -070020631 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20632 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020633 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20634
20635 /*Notify UMAC*/
20636 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20637
Jeff Johnsone7245742012-09-05 17:12:55 -070020638 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020639}
Jeff Johnson295189b2012-06-20 16:38:30 -070020640/**
20641 @brief WDI_ProcessHalDumpCmdReq
20642 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020643
20644 @param pWDICtx: pointer to the WLAN DAL context
20645 pEventData: pointer to the event information structure
20646
Jeff Johnson295189b2012-06-20 16:38:30 -070020647 @see
20648 @return Result of the function call
20649*/
20650WDI_Status
20651WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020652(
Jeff Johnson295189b2012-06-20 16:38:30 -070020653 WDI_ControlBlockType* pWDICtx,
20654 WDI_EventInfoType* pEventData
20655)
20656{
20657 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20658 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20659 wpt_uint16 usDataOffset = 0;
20660 wpt_uint16 usSendSize = 0;
20661 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020662 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020663
20664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020666 -------------------------------------------------------------------------*/
20667 if (( NULL == pEventData ) ||
20668 ( NULL == pEventData->pEventData) ||
20669 ( NULL == pEventData->pCBfnc ))
20670 {
20671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020672 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 }
20676
20677 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20678 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20679
20680 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020683 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020684 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020685 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020686 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020691
Jeff Johnson295189b2012-06-20 16:38:30 -070020692 /*-----------------------------------------------------------------------
20693 Get message buffer
20694 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020695 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020696 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20697 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020699 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20700 {
20701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080020702 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070020703 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020706 }
20707
Jeff Johnsone7245742012-09-05 17:12:55 -070020708 wpalMemoryCopy( pSendBuffer+usDataOffset,
20709 &halDumpCmdReqMsg.dumpCmdReqParams,
20710 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020711
20712 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020713 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020714
20715 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020716 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020717 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020718 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20719 wdiHALDumpCmdRspCb, pEventData->pUserData,
20720 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020721}
20722
20723/**
20724 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020725 Process hal Dump Command Response from HAL, simply route to HDD
20726
20727 @param pWDICtx: pointer to the WLAN DAL context
20728 pEventData: pointer to the event information structure
20729
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 @see
20731 @return Result of the function call
20732*/
20733WDI_Status
20734WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020735(
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 WDI_ControlBlockType* pWDICtx,
20737 WDI_EventInfoType* pEventData
20738)
20739{
20740 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020741 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020742 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20743
20744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020746 -------------------------------------------------------------------------*/
20747 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20748 ( NULL == pEventData->pEventData))
20749 {
20750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 }
20755
Jeff Johnsone7245742012-09-05 17:12:55 -070020756 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020757
20758 /*Initialize the WDI Response structure */
20759 wdiHALDumpCmdRsp.usBufferLen = 0;
20760 wdiHALDumpCmdRsp.pBuffer = NULL;
20761
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020762 wpalMemoryCopy( &halDumpCmdRspParams,
20763 pEventData->pEventData,
20764 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020765
20766 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020767 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020768
20769 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020770 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020771 {
20772 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020773 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20774 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20775
20776 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20777 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020778 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020780
Jeff Johnson295189b2012-06-20 16:38:30 -070020781 /*Notify UMAC*/
20782 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20783
20784 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20785 {
20786 /* Free the allocated buffer */
20787 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20788 }
20789 return WDI_STATUS_SUCCESS;
20790}
20791
20792/*==========================================================================
20793 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020794
Jeff Johnson295189b2012-06-20 16:38:30 -070020795 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020796 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020797==========================================================================*/
20798/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020799 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020800 when it wishes to send up a notification like the ones
20801 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020802
Jeff Johnson295189b2012-06-20 16:38:30 -070020803 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020804
20805 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020806 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020807 wctsNotifyCBData: the callback data of the user
20808
Jeff Johnson295189b2012-06-20 16:38:30 -070020809 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020810
20811 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020812*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020813void
Jeff Johnson295189b2012-06-20 16:38:30 -070020814WDI_NotifyMsgCTSCB
20815(
Jeff Johnsone7245742012-09-05 17:12:55 -070020816 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020817 WCTS_NotifyEventType wctsEvent,
20818 void* wctsNotifyCBData
20819)
20820{
Jeff Johnsone7245742012-09-05 17:12:55 -070020821 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20823
20824 if (NULL == pWDICtx )
20825 {
20826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020827 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020828 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020829 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 }
20831
20832 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20833 {
20834 /* callback presumably occurred after close */
20835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020836 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020837 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020838 }
20839
20840 if ( WCTS_EVENT_OPEN == wctsEvent )
20841 {
20842 /*Flag must be set atomically as it is checked from incoming request
20843 functions*/
20844 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020845 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020846
20847 /*Nothing to do - so try to dequeue any pending request that may have
20848 occurred while we were trying to establish this*/
20849 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020850 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020851 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020852 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020853 {
20854 /*Flag must be set atomically as it is checked from incoming request
20855 functions*/
20856 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020857 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020858
20859 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020861 wpalMutexRelease(&pWDICtx->wptMutex);
20862
20863 /*Notify that the Control Channel is closed */
20864 wpalEventSet(&pWDICtx->wctsActionEvent);
20865 }
20866
20867}/*WDI_NotifyMsgCTSCB*/
20868
20869
20870/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020871 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020872 when it wishes to send up a packet received over the
20873 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020874
Jeff Johnson295189b2012-06-20 16:38:30 -070020875 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020876
20877 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 pMsg: the packet
20879 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020880 wctsRxMsgCBData: the callback data of the user
20881
Jeff Johnson295189b2012-06-20 16:38:30 -070020882 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020883
20884 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020885*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020886void
20887WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020888(
Jeff Johnsone7245742012-09-05 17:12:55 -070020889 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 void* pMsg,
20891 wpt_uint32 uLen,
20892 void* wctsRxMsgCBData
20893)
20894{
Jeff Johnsone7245742012-09-05 17:12:55 -070020895 tHalMsgHeader *pHalMsgHeader;
20896 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020897 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20899
20900 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020901 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020902 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020903 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 ( uLen < sizeof(tHalMsgHeader)))
20905 {
20906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020907 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020908 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020909 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 }
20911
20912 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20913 {
20914 /* callback presumably occurred after close */
20915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020916 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020917 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020918 }
20919
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 context - so no serialization is necessary here
20922 ! - revisit this assumption */
20923
20924 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20925
20926 if ( uLen != pHalMsgHeader->msgLen )
20927 {
20928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20929 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020930 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20931 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 }
20933
20934 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20935
20936 /*The message itself starts after the header*/
20937 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20938 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20939 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20940 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20941
20942
20943 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20944 {
20945 /*Stop the timer as the response was received */
20946 /*!UT - check for potential race conditions between stop and response */
20947 wpalTimerStop(&pWDICtx->wptResponseTimer);
20948 }
20949 /* Check if we receive a response message which is not expected */
20950 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20951 {
20952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20953 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20954 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020955 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020956 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20957 pWDICtx->wdiExpectedResponse);
Sameer Thalappilad723582013-11-15 14:50:51 -080020958
20959 if (gWDICb.bEnableSSR == false)
20960 {
20961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20962 "SSR is not enabled on WDI timeout");
20963 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20964 return;
20965 }
20966 wpalWcnssResetIntr();
20967 /* if this timer fires, it means Riva did not receive the FIQ */
20968 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
20969
Jeff Johnson295189b2012-06-20 16:38:30 -070020970 return;
20971 }
20972
20973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20974 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20975
20976 /*Post response event to the state machine*/
20977 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20978
20979}/*WDI_RXMsgCTSCB*/
20980
20981
20982/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020983 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020984========================================================================*/
20985
20986/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020987 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020988 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020989
Jeff Johnson295189b2012-06-20 16:38:30 -070020990 @param pWDICtx - pointer to the control block
20991
20992 @return Result of the function call
20993*/
20994WPT_INLINE WDI_Status
20995WDI_CleanCB
20996(
20997 WDI_ControlBlockType* pWDICtx
20998)
20999{
21000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21001
21002 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021003 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021004
Jeff Johnsone7245742012-09-05 17:12:55 -070021005 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021006 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21007 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21008
21009 WDI_ResetAssocSessions( pWDICtx );
21010
21011 return WDI_STATUS_SUCCESS;
21012}/*WDI_CleanCB*/
21013
21014
21015/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021016 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021017
Jeff Johnsone7245742012-09-05 17:12:55 -070021018
21019 @param pWDICtx: pointer to the WLAN DAL context
21020 pEventData: pointer to the event information structure
21021
Jeff Johnson295189b2012-06-20 16:38:30 -070021022 @see
21023 @return Result of the function call
21024*/
21025WPT_INLINE WDI_Status
21026WDI_ProcessRequest
21027(
21028 WDI_ControlBlockType* pWDICtx,
21029 WDI_EventInfoType* pEventData
21030)
21031{
21032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21033
Jeff Johnsone7245742012-09-05 17:12:55 -070021034 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021035 already checked these pointers*/
21036
21037 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21038 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021039 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021041 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021042 WDI_getReqMsgString(pEventData->wdiRequest),
21043 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21044 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21045 }
21046 else
21047 {
21048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021049 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 pEventData->wdiRequest);
21051 return WDI_STATUS_E_NOT_IMPLEMENT;
21052 }
21053}/*WDI_ProcessRequest*/
21054
21055
21056/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021057 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021059 prefixes it with a send message header
21060
21061 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021062 wdiReqType: type of the request being sent
21063 uBufferLen: message buffer len
21064 pMsgBuffer: resulting allocated buffer
21065 pusDataOffset: offset in the buffer where the caller
21066 can start copying its message data
21067 puBufferSize: the resulting buffer size (offset+buff
21068 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021069
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 @see
21071 @return Result of the function call
21072*/
21073WDI_Status
21074WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021075(
21076 WDI_ControlBlockType* pWDICtx,
21077 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021078 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021079 wpt_uint8** pMsgBuffer,
21080 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 wpt_uint16* pusBufferSize
21082)
21083{
21084 tHalMsgHeader halMsgHeader;
21085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21086
Jeff Johnsone7245742012-09-05 17:12:55 -070021087 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021088 again*/
21089
21090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021091 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021092 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021093 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021094 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21095 if ( NULL == *pMsgBuffer )
21096 {
21097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21098 "Unable to allocate message buffer for req %s (%d)",
21099 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021100 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021103 }
21104
21105 /*-------------------------------------------------------------------------
21106 Fill in the message header
21107 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021108 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21109 /* Fill msgVersion */
21110#ifdef WLAN_FEATURE_11AC
21111 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021112 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021113 else
21114#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021115 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021116
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21118 *pusDataOffset = sizeof(halMsgHeader);
21119 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21120
21121 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021122}/*WDI_GetMessageBuffer*/
21123
21124
21125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021126 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021127 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021128 the CB
21129
21130 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021131 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021132
Jeff Johnson295189b2012-06-20 16:38:30 -070021133 usSendSize size of the buffer to be sent
21134 pRspCb: response callback - save in the WDI
21135 CB
21136 pUserData: user data associated with the
21137 callback
21138 wdiExpectedResponse: the code of the response that is
21139 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021140
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 @see
21142 @return Result of the function call
21143*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021144WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021145WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021146(
21147 WDI_ControlBlockType* pWDICtx,
21148 wpt_uint8* pSendBuffer,
21149 wpt_uint32 usSendSize,
21150 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021151 void* pUserData,
21152 WDI_ResponseEnumType wdiExpectedResponse
21153)
21154{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021155 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021156 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21158
21159 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021160 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021161 ------------------------------------------------------------------------*/
21162 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021163 pWDICtx->pfncRspCB = pRspCb;
21164 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021165
21166 /*-----------------------------------------------------------------------
21167 Call the CTS to send this message over - free message afterwards
21168 - notify transport failure
21169 Note: CTS is reponsible for freeing the message buffer.
21170 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021171 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21172 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21173 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021174 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 "Failed to send message over the bus - catastrophic failure");
21177
Jeff Johnsond13512a2012-07-17 11:42:19 -070021178 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021179 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021180 else
21181 {
21182 /* even when message was placed in CTS deferred Q, we will treat it
21183 success but log this info
21184 */
21185 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21186 {
21187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21188 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21189 "response %s (%d)",
21190 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21191 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021192 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021193 }
21194 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021195
Jeff Johnsond13512a2012-07-17 11:42:19 -070021196 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021197 if ( NULL != pWDICtx->wdiReqStatusCB )
21198 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021199 /*Inform originator whether request went through or not*/
21200 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21201 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021202 pWDICtx->wdiReqStatusCB = NULL;
21203 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021204 callback(wdiStatus, callbackContext);
21205
21206 /*For WDI requests which have registered a request callback,
21207 inform the WDA caller of the same via setting the return value
21208 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21209 end up repeating the functonality in the req callback for the
21210 WDI_STATUS_E_FAILURE case*/
21211 if (wdiStatus == WDI_STATUS_E_FAILURE)
21212 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021213 }
21214
Jeff Johnsond13512a2012-07-17 11:42:19 -070021215 if ( wdiStatus == WDI_STATUS_SUCCESS )
21216 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021217 /*Start timer for the expected response */
21218 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021219
21220 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021221 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021222 }
21223 else
21224 {
Jeff Johnson1920a722012-12-10 14:28:09 -080021225 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021226 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21227 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021228
Jeff Johnsond13512a2012-07-17 11:42:19 -070021229 return wdiStatus;
21230
Jeff Johnson295189b2012-06-20 16:38:30 -070021231}/*WDI_SendMsg*/
21232
21233
21234
21235/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021236 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021237 the bus using the control transport and saves some info
21238 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021239
21240 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021241 pSendBuffer: buffer to be sent
21242 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021243
Jeff Johnson295189b2012-06-20 16:38:30 -070021244 @see
21245 @return Result of the function call
21246*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021247WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021248WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021249(
21250 WDI_ControlBlockType* pWDICtx,
21251 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 wpt_uint32 usSendSize
21253)
21254{
21255 wpt_uint32 uStatus ;
21256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21257
21258 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021259 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021260 Note: CTS is reponsible for freeing the message buffer.
21261 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021263 (void*)pSendBuffer, usSendSize );
21264
21265 /*Inform Upper MAC about the outcome of the request*/
21266 if ( NULL != pWDICtx->wdiReqStatusCB )
21267 {
21268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21269 "Send indication status : %d", uStatus);
21270
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021271 /* even if CTS placed indication into its deferred Q, we treat it
21272 * as success and let CTS drain its queue as per smd interrupt to CTS
21273 */
21274 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 -070021275 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 }
21277
21278 /*If sending of the message failed - it is considered catastrophic and
21279 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021280 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21281 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21282
Jeff Johnson295189b2012-06-20 16:38:30 -070021283 {
21284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021285 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021286
21287 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21288 return WDI_STATUS_E_FAILURE;
21289 }
21290
Jeff Johnsone7245742012-09-05 17:12:55 -070021291 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021292}/*WDI_SendIndication*/
21293
21294
21295/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021296 @brief WDI_DetectedDeviceError - called internally by DAL when
21297 it has detected a failure in the device
21298
21299 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021300 usErrorCode: error code detected by WDI or received
21301 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021302
Jeff Johnson295189b2012-06-20 16:38:30 -070021303 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021304 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021305*/
21306void
21307WDI_DetectedDeviceError
21308(
21309 WDI_ControlBlockType* pWDICtx,
21310 wpt_uint16 usErrorCode
21311)
21312{
21313 WDI_LowLevelIndType wdiInd;
21314 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21315
21316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21317 "Device Error detected code: %d - transitioning to stopped state",
21318 usErrorCode);
21319
21320 wpalMutexAcquire(&pWDICtx->wptMutex);
21321
21322 WDI_STATableStop(pWDICtx);
21323
21324 WDI_ResetAssocSessions(pWDICtx);
21325
21326 /*Set the expected state transition to stopped - because the device
21327 experienced a failure*/
21328 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21329
21330 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021332
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021334
21335 /*TO DO: - there should be an attempt to reset the device here*/
21336
21337 wpalMutexRelease(&pWDICtx->wptMutex);
21338
21339 /*------------------------------------------------------------------------
21340 Notify UMAC if a handler is registered
21341 ------------------------------------------------------------------------*/
21342 if (pWDICtx->wdiLowLevelIndCB)
21343 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021344 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21345 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021346
21347 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21348 }
21349}/*WDI_DetectedDeviceError*/
21350
21351/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021352 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021353 we started on send message has expire - this should
21354 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021355 reply - trigger catastrophic failure
21356 @param
21357
Jeff Johnson295189b2012-06-20 16:38:30 -070021358 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021359
21360 @see
21361 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021362*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021363void
Jeff Johnson295189b2012-06-20 16:38:30 -070021364WDI_ResponseTimerCB
21365(
21366 void *pUserData
21367)
21368{
21369 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21371
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021372 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021373 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021377 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021378 }
21379
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021380 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021381 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021382
21383 /* If response timer is running at this time that means this timer
21384 * event is not for the last request but rather last-to-last request and
21385 * this timer event has come after we recevied respone for last-to-last
21386 * message
21387 */
21388 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21389 {
21390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21391 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021392 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021393 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
21394 return;
21395 }
21396
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021397 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021398 {
21399
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021401 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021402 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021403 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021404 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21405 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021406
21407 /* WDI timeout means Riva is not responding or SMD communication to Riva
21408 * is not happening. The only possible way to recover from this error
21409 * is to initiate SSR from APPS.
21410 * There is also an option to re-enable wifi, which will eventually
21411 * trigger SSR
21412 */
21413 if (gWDICb.bEnableSSR == false)
21414 {
21415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21416 "SSR is not enabled on WDI timeout");
21417 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21418 return;
21419 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021420#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021421 wpalWcnssResetIntr();
21422 /* if this timer fires, it means Riva did not receive the FIQ */
21423 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021424#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021425 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21426 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021427#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021428 }
21429 else
21430 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021432 "Timeout occurred but not waiting for any response %d "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021433 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021434 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21435 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070021436 }
21437
21438 return;
21439
21440}/*WDI_ResponseTimerCB*/
21441
21442
21443/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021444 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021445
Jeff Johnsone7245742012-09-05 17:12:55 -070021446
21447 @param pWDICtx: pointer to the WLAN DAL context
21448 pEventData: pointer to the event information structure
21449
Jeff Johnson295189b2012-06-20 16:38:30 -070021450 @see
21451 @return Result of the function call
21452*/
21453WPT_INLINE WDI_Status
21454WDI_ProcessResponse
21455(
21456 WDI_ControlBlockType* pWDICtx,
21457 WDI_EventInfoType* pEventData
21458)
21459{
21460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21461
Jeff Johnsone7245742012-09-05 17:12:55 -070021462 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021463 already checked these pointers
21464 ! - revisit this assumption */
21465 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21466 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021467 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021469 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021470 WDI_getRespMsgString(pEventData->wdiResponse),
21471 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21472 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21473 }
21474 else
21475 {
21476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021477 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021478 pEventData->wdiResponse);
21479 return WDI_STATUS_E_NOT_IMPLEMENT;
21480 }
21481}/*WDI_ProcessResponse*/
21482
21483
21484/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021485 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021486=========================================================================*/
21487
21488/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021489 @brief Utility function used by the DAL Core to help queue a
21490 request that cannot be processed right away.
21491 @param
21492
Jeff Johnson295189b2012-06-20 16:38:30 -070021493 pWDICtx: - pointer to the WDI control block
21494 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021495 queued
21496
21497 @see
21498 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021499*/
21500WDI_Status
21501WDI_QueuePendingReq
21502(
21503 WDI_ControlBlockType* pWDICtx,
21504 WDI_EventInfoType* pEventData
21505)
21506{
Jeff Johnsone7245742012-09-05 17:12:55 -070021507 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021508 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021509 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21511
21512 if ( NULL == pEventDataQueue )
21513 {
21514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021515 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021516 WDI_ASSERT(0);
21517 return WDI_STATUS_MEM_FAILURE;
21518 }
21519
21520 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21521 pEventDataQueue->pUserData = pEventData->pUserData;
21522 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21523 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021524 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021525
21526 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21527 {
21528 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021529
Jeff Johnson295189b2012-06-20 16:38:30 -070021530 if ( NULL == pEventInfo )
21531 {
21532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021533 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021534 WDI_ASSERT(0);
21535 wpalMemoryFree(pEventDataQueue);
21536 return WDI_STATUS_MEM_FAILURE;
21537 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021538
Jeff Johnson295189b2012-06-20 16:38:30 -070021539 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21540
21541 }
21542 pEventDataQueue->pEventData = pEventInfo;
21543
21544 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021545 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021546
Jeff Johnsone7245742012-09-05 17:12:55 -070021547 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021548
21549 return WDI_STATUS_SUCCESS;
21550}/*WDI_QueuePendingReq*/
21551
21552/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021553 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021554 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021555 @param
21556
21557 pMsg - pointer to the message
21558
21559 @see
21560 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021561*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021562void
Jeff Johnson295189b2012-06-20 16:38:30 -070021563WDI_PALCtrlMsgCB
21564(
21565 wpt_msg *pMsg
21566)
21567{
21568 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021569 WDI_ControlBlockType* pWDICtx = NULL;
21570 WDI_Status wdiStatus;
21571 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021572 void* pUserData;
21573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21574
21575 if (( NULL == pMsg )||
21576 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21577 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21578 {
21579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021580 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021582 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021583 }
21584
21585 /*Transition back to the state that we had before serialization
21586 - serialization transitions us to BUSY to stop any incomming requests
21587 ! TO DO L: possible race condition here if a request comes in between the
21588 state transition and the post function*/
21589
Jeff Johnsone7245742012-09-05 17:12:55 -070021590 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021591
21592 /*-----------------------------------------------------------------------
21593 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021594 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021595 -----------------------------------------------------------------------*/
21596 switch ( pEventData->wdiRequest )
21597 {
21598
Jeff Johnsone7245742012-09-05 17:12:55 -070021599 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021600 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21601 break;
21602
Jeff Johnson295189b2012-06-20 16:38:30 -070021603 case WDI_NV_DOWNLOAD_REQ:
21604 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21605 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21606 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21607 {
21608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021609 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021610 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21611 }
21612 else
21613 {
21614 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21615 }
21616
21617 break;
21618
21619 default:
21620 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21621 break;
21622 }/*switch ( pEventData->wdiRequest )*/
21623
21624 if ( WDI_STATUS_SUCCESS != wdiStatus )
21625 {
21626 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21627
21628 if ( NULL != pfnReqStatusCB )
21629 {
21630 /*Fail the request*/
21631 pfnReqStatusCB( wdiStatus, pUserData);
21632 }
21633 }
21634
21635 /* Free data - that was allocated when queueing*/
21636 if( pEventData != NULL )
21637 {
21638 if( pEventData->pEventData != NULL )
21639 {
21640 wpalMemoryFree(pEventData->pEventData);
21641 }
21642 wpalMemoryFree(pEventData);
21643 }
21644
21645 if( pMsg != NULL )
21646 {
21647 wpalMemoryFree(pMsg);
21648 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021649
Jeff Johnson295189b2012-06-20 16:38:30 -070021650}/*WDI_PALCtrlMsgCB*/
21651
21652/**
21653 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021654 and schedule for execution a pending request
21655 @param
21656
Jeff Johnson295189b2012-06-20 16:38:30 -070021657 pWDICtx: - pointer to the WDI control block
21658 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021659 queued
21660
21661 @see
21662 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021663*/
21664WDI_Status
21665WDI_DequeuePendingReq
21666(
21667 WDI_ControlBlockType* pWDICtx
21668)
21669{
Jeff Johnsone7245742012-09-05 17:12:55 -070021670 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021671 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021672 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21674
Jeff Johnsone7245742012-09-05 17:12:55 -070021675 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021676
21677 if ( NULL == pNode )
21678 {
21679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021680 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021681 return WDI_STATUS_SUCCESS;
21682 }
21683
21684 /*The node actually points to the 1st element inside the Event Data struct -
21685 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021686 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021687
21688 /*Serialize processing in the control thread
21689 !TO DO: - check to see if these are all the messages params that need
21690 to be filled in*/
21691 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21692
21693 if ( NULL == palMsg )
21694 {
21695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021696 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021697 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021698 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021699 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021700 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021701 palMsg->callback = WDI_PALCtrlMsgCB;
21702 palMsg->ptr = pEventData;
21703
21704 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021705 palMsg->val = pWDICtx->uGlobalState;
Leo Chang6e358542013-12-17 13:35:00 -080021706 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021707
Jeff Johnson295189b2012-06-20 16:38:30 -070021708 /*Transition back to BUSY as we need to handle a queued request*/
21709 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021710
Jeff Johnson295189b2012-06-20 16:38:30 -070021711 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21712
21713 return WDI_STATUS_PENDING;
21714}/*WDI_DequeuePendingReq*/
21715
21716
21717/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021718 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021719 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021720 away.- The assoc requests will be queued by BSSID
21721 @param
21722
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 pWDICtx: - pointer to the WDI control block
21724 pEventData: pointer to the evnt info that needs to be queued
21725 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021726
21727 @see
21728 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021729*/
21730WDI_Status
21731WDI_QueueNewAssocRequest
21732(
21733 WDI_ControlBlockType* pWDICtx,
21734 WDI_EventInfoType* pEventData,
21735 wpt_macAddr macBSSID
21736)
21737{
Jeff Johnsone7245742012-09-05 17:12:55 -070021738 wpt_uint8 i;
21739 WDI_BSSSessionType* pSession = NULL;
21740 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021741 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021742 void* pEventInfo;
21743 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021745
Jeff Johnsone7245742012-09-05 17:12:55 -070021746
21747 /*------------------------------------------------------------------------
21748 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021749 ------------------------------------------------------------------------*/
21750 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21751 {
21752 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21753 {
21754 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021755 pSession = &pWDICtx->aBSSSessions[i];
21756 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021757 }
21758 }
21759
21760 if ( i >= WDI_MAX_BSS_SESSIONS )
21761 {
21762 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021764 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021765
Jeff Johnson295189b2012-06-20 16:38:30 -070021766 /*------------------------------------------------------------------------
21767 Fill in the BSSID for this session and set the usage flag
21768 ------------------------------------------------------------------------*/
21769 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021770 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021771
21772 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021773 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021774 ------------------------------------------------------------------------*/
21775 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21776 if ( NULL == pEventDataQueue )
21777 {
21778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021779 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021780 WDI_ASSERT(0);
21781 return WDI_STATUS_MEM_FAILURE;
21782 }
21783
21784 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21785 if ( NULL == pSessionIdElement )
21786 {
21787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021788 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021789 WDI_ASSERT(0);
21790 wpalMemoryFree(pEventDataQueue);
21791 return WDI_STATUS_MEM_FAILURE;
21792 }
21793
21794 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21795 if ( NULL == pEventInfo )
21796 {
21797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021798 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021799 WDI_ASSERT(0);
21800 wpalMemoryFree(pSessionIdElement);
21801 wpalMemoryFree(pEventDataQueue);
21802 return WDI_STATUS_MEM_FAILURE;
21803 }
21804
21805 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21806 pEventDataQueue->pUserData = pEventData->pUserData;
21807 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21808 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021809 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021810
21811 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21812 pEventDataQueue->pEventData = pEventInfo;
21813
21814 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021815 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021816
21817 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021818 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021819
Jeff Johnsone7245742012-09-05 17:12:55 -070021820 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021821
21822 /*We need to maintain a separate list that keeps track of the order in which
21823 the new assoc requests are being queued such that we can start processing
21824 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021825 pSessionIdElement->ucIndex = i;
21826 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021827
21828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21829 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021830 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021831
21832 /*Return pending as this is what the status of the request is since it has
21833 been queued*/
21834 return WDI_STATUS_PENDING;
21835}/*WDI_QueueNewAssocRequest*/
21836
21837/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021838 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021839 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021840 away.- The assoc requests will be queued by BSSID
21841 @param
21842
Jeff Johnson295189b2012-06-20 16:38:30 -070021843 pWDICtx: - pointer to the WDI control block
21844 pSession: - session in which to queue
21845 pEventData: pointer to the event info that needs to be
21846 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021847
21848 @see
21849 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021850*/
21851WDI_Status
21852WDI_QueueAssocRequest
21853(
21854 WDI_ControlBlockType* pWDICtx,
21855 WDI_BSSSessionType* pSession,
21856 WDI_EventInfoType* pEventData
21857)
21858{
Jeff Johnsone7245742012-09-05 17:12:55 -070021859 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021860 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021861 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021863
21864 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021865 Sanity check
21866 ------------------------------------------------------------------------*/
21867 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21868 {
21869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021871
Jeff Johnsone7245742012-09-05 17:12:55 -070021872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021873 }
21874
21875 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021876 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021877 ------------------------------------------------------------------------*/
21878 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21879 if ( NULL == pEventDataQueue )
21880 {
21881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021882 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021883 WDI_ASSERT(0);
21884 return WDI_STATUS_MEM_FAILURE;
21885 }
21886
21887 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21888 if ( NULL == pEventInfo )
21889 {
21890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21891 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021892 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021893 WDI_ASSERT(0);
21894 wpalMemoryFree(pEventDataQueue);
21895 return WDI_STATUS_MEM_FAILURE;
21896 }
21897
21898 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21899 pEventDataQueue->pUserData = pEventData->pUserData;
21900 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21901 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021902 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021903 pEventDataQueue->pEventData = pEventInfo;
21904
21905 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21906
21907 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021909
21910 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021911 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021912
Jeff Johnsone7245742012-09-05 17:12:55 -070021913 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021914
21915 /*The result of this operation is pending because the request has been
21916 queued and it will be processed at a later moment in time */
21917 return WDI_STATUS_PENDING;
21918}/*WDI_QueueAssocRequest*/
21919
21920/**
21921 @brief Utility function used by the DAL Core to help dequeue
21922 an association request that was pending
21923 The request will be queued up in front of the main
21924 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021925 @param
21926
Jeff Johnson295189b2012-06-20 16:38:30 -070021927 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021928
21929
21930 @see
21931 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021932*/
21933WDI_Status
21934WDI_DequeueAssocRequest
21935(
21936 WDI_ControlBlockType* pWDICtx
21937)
21938{
Jeff Johnsone7245742012-09-05 17:12:55 -070021939 wpt_list_node* pNode = NULL;
21940 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021941 WDI_BSSSessionType* pSession;
21942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021943
21944 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021945 Sanity check
21946 ------------------------------------------------------------------------*/
21947 if ( NULL == pWDICtx )
21948 {
21949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021950 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021951
Jeff Johnsone7245742012-09-05 17:12:55 -070021952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021953 }
21954
21955 /*------------------------------------------------------------------------
21956 An association has been completed => a new association can occur
21957 Check to see if there are any pending associations ->
21958 If so , transfer all the pending requests into the busy queue for
21959 processing
21960 These requests have arrived prior to the requests in the busy queue
21961 (bc they needed to be processed in order to be placed in this queue)
21962 => they will be placed at the front of the busy queue
21963 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021964 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021965
21966 if ( NULL == pNode )
21967 {
21968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021969 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021970 return WDI_STATUS_SUCCESS;
21971 }
21972
21973 /*The node actually points to the 1st element inside the Session Id struct -
21974 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021975 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021976
21977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21978 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21979
21980 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21981 {
21982 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021983
Jeff Johnson295189b2012-06-20 16:38:30 -070021984 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021985 the front of the main waiting queue for subsequent execution*/
21986 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021987 while ( NULL != pNode )
21988 {
21989 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021990 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21991 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021992 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021993 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021994 }
21995 else
21996 {
21997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021998 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021999 WPAL_ASSERT(0);
22000 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022002 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022003
Jeff Johnson295189b2012-06-20 16:38:30 -070022004 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22005 wpalMemoryFree(pSessionIdElement);
22006 return WDI_STATUS_SUCCESS;
22007}/*WDI_DequeueAssocRequest*/
22008
22009/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022010 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022011 pending requests - all req cb will be called with
22012 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022013 @param
22014
Jeff Johnson295189b2012-06-20 16:38:30 -070022015 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022016
22017 @see
22018 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022019*/
22020WDI_Status
22021WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022022(
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 WDI_ControlBlockType* pWDICtx
22024)
22025{
Jeff Johnsone7245742012-09-05 17:12:55 -070022026 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022027 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022028 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022029 void* pUserData;
22030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22031
Jeff Johnsone7245742012-09-05 17:12:55 -070022032 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022033
22034 /*------------------------------------------------------------------------
22035 Go through all the requests and fail them - this will only be called
22036 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022037 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 ------------------------------------------------------------------------*/
22039 while( pNode )
22040 {
22041 /*The node actually points to the 1st element inside the Event Data struct -
22042 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022043 pEventDataQueue = (WDI_EventInfoType*)pNode;
22044
Jeff Johnson295189b2012-06-20 16:38:30 -070022045 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22046 if ( NULL != pfnReqStatusCB )
22047 {
22048 /*Fail the request*/
22049 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22050 }
22051 /* Free data - that was allocated when queueing */
22052 if ( pEventDataQueue->pEventData != NULL )
22053 {
22054 wpalMemoryFree(pEventDataQueue->pEventData);
22055 }
22056 wpalMemoryFree(pEventDataQueue);
22057
22058 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22059 {
22060 break;
22061 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022062 }
22063
Jeff Johnson295189b2012-06-20 16:38:30 -070022064 return WDI_STATUS_SUCCESS;
22065}/*WDI_ClearPendingRequests*/
22066
22067/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022068 @brief Helper routine used to init the BSS Sessions in the WDI control block
22069
22070
22071 @param pWDICtx: pointer to the WLAN DAL context
22072
Jeff Johnson295189b2012-06-20 16:38:30 -070022073 @see
22074*/
22075void
22076WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022077(
Jeff Johnson295189b2012-06-20 16:38:30 -070022078 WDI_ControlBlockType* pWDICtx
22079)
22080{
Jeff Johnsone7245742012-09-05 17:12:55 -070022081 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22083
22084 /*-------------------------------------------------------------------------
22085 No Sanity check
22086 -------------------------------------------------------------------------*/
22087 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22088 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022089 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22091 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22092 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22093 }
22094}/*WDI_ResetAssocSessions*/
22095
22096/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022097 @brief Helper routine used to find a session based on the BSSID
22098
22099
22100 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022101 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022102 pSession: pointer to the session (if found)
22103
Jeff Johnson295189b2012-06-20 16:38:30 -070022104 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022105 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022106*/
22107wpt_uint8
22108WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022109(
Jeff Johnson295189b2012-06-20 16:38:30 -070022110 WDI_ControlBlockType* pWDICtx,
22111 wpt_macAddr macBSSID,
22112 WDI_BSSSessionType** ppSession
22113)
22114{
Jeff Johnsone7245742012-09-05 17:12:55 -070022115 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22117
22118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022119 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022120 -------------------------------------------------------------------------*/
22121 if ( NULL == ppSession )
22122 {
22123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022124 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022125 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022126 }
22127
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022129
Jeff Johnsone7245742012-09-05 17:12:55 -070022130 /*------------------------------------------------------------------------
22131 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022132 ------------------------------------------------------------------------*/
22133 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22134 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022135 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22136 (eWLAN_PAL_TRUE ==
22137 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22138 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022139 {
22140 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022141 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022142 return i;
22143 }
22144 }
22145
Jeff Johnsone7245742012-09-05 17:12:55 -070022146 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022147}/*WDI_FindAssocSession*/
22148
22149/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022150 @brief Helper routine used to find a session based on the BSSID
22151
22152
22153 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022154 ucBSSIdx: BSS Index of the session
22155 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022156
Jeff Johnson295189b2012-06-20 16:38:30 -070022157 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022158 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022159*/
22160wpt_uint8
22161WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022162(
Jeff Johnson295189b2012-06-20 16:38:30 -070022163 WDI_ControlBlockType* pWDICtx,
22164 wpt_uint16 ucBSSIdx,
22165 WDI_BSSSessionType** ppSession
22166)
22167{
Jeff Johnsone7245742012-09-05 17:12:55 -070022168 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22170
22171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022172 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 -------------------------------------------------------------------------*/
22174 if ( NULL == ppSession )
22175 {
22176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022177 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022178 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022179 }
22180
Jeff Johnsone7245742012-09-05 17:12:55 -070022181 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022182
Jeff Johnsone7245742012-09-05 17:12:55 -070022183 /*------------------------------------------------------------------------
22184 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022185 ------------------------------------------------------------------------*/
22186 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22187 {
22188 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22189 {
22190 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022191 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 return i;
22193 }
22194 }
22195
Jeff Johnsone7245742012-09-05 17:12:55 -070022196 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022197}/*WDI_FindAssocSessionByBSSIdx*/
22198
22199/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022200 @brief Helper routine used to find a session based on the BSSID
22201
22202
22203 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022204 ucBSSIdx: BSS Index of the session
22205 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022206
Jeff Johnson295189b2012-06-20 16:38:30 -070022207 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022208 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022209*/
22210wpt_uint8
22211WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022212(
Jeff Johnson295189b2012-06-20 16:38:30 -070022213 WDI_ControlBlockType* pWDICtx,
22214 wpt_uint16 usIdx,
22215 WDI_BSSSessionType** ppSession
22216)
22217{
22218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22219
22220 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022221 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022222 -------------------------------------------------------------------------*/
22223 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22224 {
22225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022226 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022227 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022228 }
22229
22230 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022231 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022232
22233 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022234
Jeff Johnson295189b2012-06-20 16:38:30 -070022235}/*WDI_FindAssocSessionByBSSIdx*/
22236
22237/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022238 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022239 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022240
22241
22242 @param pWDICtx: pointer to the WLAN DAL context
22243 pSession: pointer to the session (if found)
22244
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022246 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022247*/
22248wpt_uint8
22249WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022250(
Jeff Johnson295189b2012-06-20 16:38:30 -070022251 WDI_ControlBlockType* pWDICtx,
22252 WDI_BSSSessionType** ppSession
22253)
22254{
Jeff Johnsone7245742012-09-05 17:12:55 -070022255 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 -------------------------------------------------------------------------*/
22260 if ( NULL == ppSession )
22261 {
22262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022263 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 }
22266
Jeff Johnsone7245742012-09-05 17:12:55 -070022267 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022268
Jeff Johnsone7245742012-09-05 17:12:55 -070022269 /*------------------------------------------------------------------------
22270 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022271 ------------------------------------------------------------------------*/
22272 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22273 {
22274 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22275 {
22276 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022277 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022278 return i;
22279 }
22280 }
22281
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022283}/*WDI_FindEmptySession*/
22284
22285
22286/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022287 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022288 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022289
22290
22291 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070022292 macBSSID: pointer to BSSID. If NULL, get all the session.
22293 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22294 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22295 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022296 @see
22297 @return Number of sessions in use
22298*/
22299wpt_uint8
22300WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022301(
Hoonki Lee26599972013-04-24 01:21:58 -070022302 WDI_ControlBlockType* pWDICtx,
22303 wpt_macAddr macBSSID,
22304 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022305)
22306{
Jeff Johnsone7245742012-09-05 17:12:55 -070022307 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022309
22310 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 Count all sessions in use
22312 ------------------------------------------------------------------------*/
22313 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22314 {
Hoonki Lee26599972013-04-24 01:21:58 -070022315 if ( macBSSID && skipBSSID &&
22316 (eWLAN_PAL_TRUE ==
22317 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22318 WDI_MAC_ADDR_LEN)))
22319 {
22320 continue;
22321 }
22322 else if ( pWDICtx->aBSSSessions[i].bInUse )
22323 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022324 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070022325 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022326 }
22327
Jeff Johnsone7245742012-09-05 17:12:55 -070022328 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022329}/*WDI_GetActiveSessionsCount*/
22330
22331/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022332 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022333 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022334
22335
22336 @param pWDICtx: pointer to the WLAN DAL context
22337 pSession: pointer to the session (if found)
22338
Jeff Johnson295189b2012-06-20 16:38:30 -070022339 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022340 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022341*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022342void
Jeff Johnson295189b2012-06-20 16:38:30 -070022343WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022344(
Jeff Johnson295189b2012-06-20 16:38:30 -070022345 WDI_ControlBlockType* pWDICtx,
22346 WDI_BSSSessionType* ppSession
22347)
22348{
22349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022351 -------------------------------------------------------------------------*/
22352 if ( NULL == ppSession )
22353 {
22354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022355 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022356 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022357 }
22358
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 /*------------------------------------------------------------------------
22360 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022361 ------------------------------------------------------------------------*/
22362 wpal_list_destroy(&ppSession->wptPendingQueue);
22363 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022364 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22365 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022366 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22367 wpal_list_init(&ppSession->wptPendingQueue);
22368
22369}/*WDI_DeleteSession*/
22370
22371/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022372 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022373 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022374 @param
22375
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 WDI_AddStaParams: - pointer to the WDI Add STA params
22377 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022378
22379 @see
22380 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022381*/
22382void
22383WDI_AddBcastSTAtoSTATable
22384(
22385 WDI_ControlBlockType* pWDICtx,
22386 WDI_AddStaParams * staParams,
22387 wpt_uint16 usBcastStaIdx
22388)
22389{
22390 WDI_AddStaParams wdiAddSTAParam = {0};
22391 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22393
22394 /*---------------------------------------------------------------------
22395 Sanity check
22396 ---------------------------------------------------------------------*/
22397 if ( NULL == staParams )
22398 {
22399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022400 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022401
Jeff Johnsone7245742012-09-05 17:12:55 -070022402 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022403 }
22404
22405 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22406 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22407 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22408 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22409 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22410 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22411 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22412 WDI_MAC_ADDR_LEN );
22413 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22414 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22415 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22416 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22417 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22418 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22419 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022420
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22422}
22423
22424/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022425 @brief NV blob will be divided into fragments of size 4kb and
22426 Sent to HAL
22427
22428 @param pWDICtx: pointer to the WLAN DAL context
22429 pEventData: pointer to the event information structure
22430
Jeff Johnson295189b2012-06-20 16:38:30 -070022431 @see
22432 @return Result of the function call
22433 */
22434
22435WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022436(
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 WDI_ControlBlockType* pWDICtx,
22438 WDI_EventInfoType* pEventData
22439)
22440{
22441
22442 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22443 wpt_uint8* pSendBuffer = NULL;
22444 wpt_uint16 usDataOffset = 0;
22445 wpt_uint16 usSendSize = 0;
22446 wpt_uint16 usCurrentFragmentSize =0;
22447 wpt_uint8* pSrcBuffer = NULL;
22448 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22449 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22450
22451 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22452 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22453 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22454
Jeff Johnsone7245742012-09-05 17:12:55 -070022455 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022456 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22457
22458 /* Update the current Fragment Number */
22459 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22460
22461 /*Update the HAL REQ structure */
22462 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22463 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22464 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22465
22466 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022467 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 image will be sent to HAL*/
22469
Jeff Johnsone7245742012-09-05 17:12:55 -070022470 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022471 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022472 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022473 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022474 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022475 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22476 usCurrentFragmentSize = FRAGMENT_SIZE;
22477
22478 /*Update the HAL REQ structure */
22479 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22480 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22481
22482 }
22483 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022484 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022485 usCurrentFragmentSize = FRAGMENT_SIZE;
22486
22487 /*Update the HAL REQ structure */
22488 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22489 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22490 }
22491
22492 /*-----------------------------------------------------------------------
22493 Get message buffer
22494 -----------------------------------------------------------------------*/
22495 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22496 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22497 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022498 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022499 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22500 {
22501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080022502 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 pEventData, pwdiNvDownloadReqParams);
22504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022506 }
22507
22508 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022509 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022510 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22511
22512 /* Appending the NV image fragment */
22513 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22514 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22515 usCurrentFragmentSize);
22516
22517 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022518 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022519
Jeff Johnsone7245742012-09-05 17:12:55 -070022520 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22521 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022522 WDI_NV_DOWNLOAD_RESP);
22523
22524}
Jeff Johnsone7245742012-09-05 17:12:55 -070022525/*============================================================================
22526 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022527 ============================================================================*/
22528/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022529 @brief Helper routine used to find a session based on the BSSID
22530 @param pContext: pointer to the WLAN DAL context
22531 @param pDPContext: pointer to the Datapath context
22532
Jeff Johnson295189b2012-06-20 16:38:30 -070022533 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022534 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022535*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022536WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022537WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22538{
22539 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22540
22541 pCB->pDPContext = pDPContext;
22542 return;
22543}
22544
22545/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022546 @brief Helper routine used to find a session based on the BSSID
22547
22548
22549 @param pContext: pointer to the WLAN DAL context
22550
Jeff Johnson295189b2012-06-20 16:38:30 -070022551 @see
22552 @return pointer to Datapath context
22553*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022554WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022555WDI_DS_GetDatapathContext (void *pContext)
22556{
22557 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22558 return pCB->pDPContext;
22559}
22560/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022561 @brief Helper routine used to find a session based on the BSSID
22562
22563
22564 @param pContext: pointer to the WLAN DAL context
22565 @param pDTDriverContext: pointer to the Transport Driver context
22566
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 @see
22568 @return void
22569*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022570WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022571WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22572{
22573 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22574
22575 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022577}
22578
22579/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022580 @brief Helper routine used to find a session based on the BSSID
22581
22582
22583 @param pWDICtx: pointer to the WLAN DAL context
22584
Jeff Johnson295189b2012-06-20 16:38:30 -070022585 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022586 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022587*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022588WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022589WDT_GetTransportDriverContext (void *pContext)
22590{
22591 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022592 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022593}
22594
Jeff Johnsone7245742012-09-05 17:12:55 -070022595/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022596 Helper inline converters
22597 ============================================================================*/
22598/*Convert WDI driver type into HAL driver type*/
22599WPT_STATIC WPT_INLINE WDI_Status
22600WDI_HAL_2_WDI_STATUS
22601(
22602 eHalStatus halStatus
22603)
22604{
Jeff Johnsone7245742012-09-05 17:12:55 -070022605 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022606 the chances of getting inlined*/
22607 switch( halStatus )
22608 {
22609 case eHAL_STATUS_SUCCESS:
22610 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22611 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22612 return WDI_STATUS_SUCCESS;
22613 case eHAL_STATUS_FAILURE:
22614 return WDI_STATUS_E_FAILURE;
22615 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022616 return WDI_STATUS_MEM_FAILURE;
22617 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022618 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022619 default:
22620 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22621 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022622
Jeff Johnsone7245742012-09-05 17:12:55 -070022623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022624}/*WDI_HAL_2_WDI_STATUS*/
22625
22626/*Convert WDI request type into HAL request type*/
22627WPT_STATIC WPT_INLINE tHalHostMsgType
22628WDI_2_HAL_REQ_TYPE
22629(
22630 WDI_RequestEnumType wdiReqType
22631)
22632{
Jeff Johnsone7245742012-09-05 17:12:55 -070022633 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022634 the chances of getting inlined*/
22635 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022636 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022638 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022639 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022640 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022641 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022642 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022643 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022644 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022645 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022646 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022647 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022648 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022649 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022650 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022651 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022652 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022653 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022654 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022655 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022656 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022657 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022658 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022659 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022660 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022661 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022662 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022663 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022664 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022665 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022666 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022667 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022668 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022669 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022670 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022671 return WLAN_HAL_RMV_STAKEY_REQ;
22672 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022673 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022675 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022676 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022677 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022678 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022679 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022680 case WDI_DEL_BA_REQ:
22681 return WLAN_HAL_DEL_BA_REQ;
22682#ifdef FEATURE_WLAN_CCX
22683 case WDI_TSM_STATS_REQ:
22684 return WLAN_HAL_TSM_STATS_REQ;
22685#endif
22686 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022687 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022688 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022689 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022690 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022691 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022692 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022693 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022694 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022695 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022696 case WDI_ADD_BA_SESSION_REQ:
22697 return WLAN_HAL_ADD_BA_SESSION_REQ;
22698 case WDI_TRIGGER_BA_REQ:
22699 return WLAN_HAL_TRIGGER_BA_REQ;
22700 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022701 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022702 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022703 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022704 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22705 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22706 case WDI_SET_MAX_TX_POWER_REQ:
22707 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussainfc753992013-08-09 15:09:58 -070022708 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
22709 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schangd82195a2013-03-13 18:41:24 -070022710 case WDI_SET_TX_POWER_REQ:
22711 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022712 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22713 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022714#ifdef FEATURE_WLAN_TDLS
22715 case WDI_TDLS_LINK_ESTABLISH_REQ:
22716 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22717#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022718 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022719 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022720 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022721 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022722 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022723 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022724 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022725 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022726 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022727 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022728 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022729 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022730 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022731 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022732 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022733 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022734 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022735 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022736 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022737 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022738 case WDI_REM_BEACON_FILTER_REQ:
22739 return WLAN_HAL_REM_BCN_FILTER_REQ;
22740 case WDI_SET_RSSI_THRESHOLDS_REQ:
22741 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22742 case WDI_HOST_OFFLOAD_REQ:
22743 return WLAN_HAL_HOST_OFFLOAD_REQ;
22744 case WDI_WOWL_ADD_BC_PTRN_REQ:
22745 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22746 case WDI_WOWL_DEL_BC_PTRN_REQ:
22747 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22748 case WDI_WOWL_ENTER_REQ:
22749 return WLAN_HAL_ENTER_WOWL_REQ;
22750 case WDI_WOWL_EXIT_REQ:
22751 return WLAN_HAL_EXIT_WOWL_REQ;
22752 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22753 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22754 case WDI_NV_DOWNLOAD_REQ:
22755 return WLAN_HAL_DOWNLOAD_NV_REQ;
22756 case WDI_FLUSH_AC_REQ:
22757 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22758 case WDI_BTAMP_EVENT_REQ:
22759 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22760#ifdef WLAN_FEATURE_VOWIFI_11R
22761 case WDI_AGGR_ADD_TS_REQ:
22762 return WLAN_HAL_AGGR_ADD_TS_REQ;
22763#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 case WDI_FTM_CMD_REQ:
22765 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 case WDI_ADD_STA_SELF_REQ:
22767 return WLAN_HAL_ADD_STA_SELF_REQ;
22768 case WDI_DEL_STA_SELF_REQ:
22769 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022770#ifdef FEATURE_OEM_DATA_SUPPORT
22771 case WDI_START_OEM_DATA_REQ:
22772 return WLAN_HAL_START_OEM_DATA_REQ;
22773#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022774 case WDI_HOST_RESUME_REQ:
22775 return WLAN_HAL_HOST_RESUME_REQ;
22776 case WDI_HOST_SUSPEND_IND:
22777 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022778 case WDI_TRAFFIC_STATS_IND:
22779 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022780#ifdef WLAN_FEATURE_11W
22781 case WDI_EXCLUDE_UNENCRYPTED_IND:
22782 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22783#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 case WDI_KEEP_ALIVE_REQ:
22785 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022786#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022787 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22788 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022789#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022790#ifdef FEATURE_WLAN_SCAN_PNO
22791 case WDI_SET_PREF_NETWORK_REQ:
22792 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22793 case WDI_SET_RSSI_FILTER_REQ:
22794 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22795 case WDI_UPDATE_SCAN_PARAMS_REQ:
22796 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22797#endif // FEATURE_WLAN_SCAN_PNO
22798 case WDI_SET_TX_PER_TRACKING_REQ:
22799 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22800#ifdef WLAN_FEATURE_PACKET_FILTERING
22801 case WDI_8023_MULTICAST_LIST_REQ:
22802 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22803 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022804 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022805 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22806 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22807 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22808 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22809#endif // WLAN_FEATURE_PACKET_FILTERING
22810 case WDI_HAL_DUMP_CMD_REQ:
22811 return WLAN_HAL_DUMP_COMMAND_REQ;
22812#ifdef WLAN_FEATURE_GTK_OFFLOAD
22813 case WDI_GTK_OFFLOAD_REQ:
22814 return WLAN_HAL_GTK_OFFLOAD_REQ;
22815 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22816 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22817#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22818
22819 case WDI_INIT_SCAN_CON_REQ:
22820 return WLAN_HAL_INIT_SCAN_CON_REQ;
22821 case WDI_SET_POWER_PARAMS_REQ:
22822 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22823 case WDI_SET_TM_LEVEL_REQ:
22824 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22825 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22826 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022827#ifdef WLAN_FEATURE_11AC
22828 case WDI_UPDATE_VHT_OP_MODE_REQ:
22829 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22830#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022831 case WDI_GET_ROAM_RSSI_REQ:
22832 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022833 case WDI_DHCP_START_IND:
22834 return WLAN_HAL_DHCP_START_IND;
22835 case WDI_DHCP_STOP_IND:
22836 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022837#ifdef FEATURE_WLAN_LPHB
22838 case WDI_LPHB_CFG_REQ:
22839 return WLAN_HAL_LPHB_CFG_REQ;
22840#endif /* FEATURE_WLAN_LPHB */
Yue Ma365933a2013-08-14 15:59:08 -070022841 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22842 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22843 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22844 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22845
Rajeev3db91f12013-10-05 11:03:42 +053022846#ifdef FEATURE_WLAN_BATCH_SCAN
22847 case WDI_SET_BATCH_SCAN_REQ:
22848 return WLAN_HAL_BATCHSCAN_SET_REQ;
22849 case WDI_STOP_BATCH_SCAN_IND:
22850 return WLAN_HAL_BATCHSCAN_STOP_IND;
22851 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22852 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22853#endif
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070022854 case WDI_RATE_UPDATE_IND:
22855 return WLAN_HAL_RATE_UPDATE_IND;
Rajeev3db91f12013-10-05 11:03:42 +053022856
Jeff Johnson295189b2012-06-20 16:38:30 -070022857 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022858 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022859 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022860
Jeff Johnson295189b2012-06-20 16:38:30 -070022861}/*WDI_2_HAL_REQ_TYPE*/
22862
22863/*Convert WDI response type into HAL response type*/
22864WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22865HAL_2_WDI_RSP_TYPE
22866(
22867 tHalHostMsgType halMsg
22868)
22869{
Jeff Johnsone7245742012-09-05 17:12:55 -070022870 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022871 the chances of getting inlined*/
22872 switch( halMsg )
22873 {
22874 case WLAN_HAL_START_RSP:
22875 return WDI_START_RESP;
22876 case WLAN_HAL_STOP_RSP:
22877 return WDI_STOP_RESP;
22878 case WLAN_HAL_INIT_SCAN_RSP:
22879 return WDI_INIT_SCAN_RESP;
22880 case WLAN_HAL_START_SCAN_RSP:
22881 return WDI_START_SCAN_RESP;
22882 case WLAN_HAL_END_SCAN_RSP:
22883 return WDI_END_SCAN_RESP;
22884 case WLAN_HAL_FINISH_SCAN_RSP:
22885 return WDI_FINISH_SCAN_RESP;
22886 case WLAN_HAL_CONFIG_STA_RSP:
22887 return WDI_CONFIG_STA_RESP;
22888 case WLAN_HAL_DELETE_STA_RSP:
22889 return WDI_DEL_STA_RESP;
22890 case WLAN_HAL_CONFIG_BSS_RSP:
22891 return WDI_CONFIG_BSS_RESP;
22892 case WLAN_HAL_DELETE_BSS_RSP:
22893 return WDI_DEL_BSS_RESP;
22894 case WLAN_HAL_JOIN_RSP:
22895 return WDI_JOIN_RESP;
22896 case WLAN_HAL_POST_ASSOC_RSP:
22897 return WDI_POST_ASSOC_RESP;
22898 case WLAN_HAL_SET_BSSKEY_RSP:
22899 return WDI_SET_BSS_KEY_RESP;
22900 case WLAN_HAL_SET_STAKEY_RSP:
22901 return WDI_SET_STA_KEY_RESP;
22902 case WLAN_HAL_RMV_BSSKEY_RSP:
22903 return WDI_RMV_BSS_KEY_RESP;
22904 case WLAN_HAL_RMV_STAKEY_RSP:
22905 return WDI_RMV_STA_KEY_RESP;
22906 case WLAN_HAL_SET_BCASTKEY_RSP:
22907 return WDI_SET_STA_BCAST_KEY_RESP;
22908 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22909 // return WDI_RMV_STA_BCAST_KEY_RESP;
22910 case WLAN_HAL_ADD_TS_RSP:
22911 return WDI_ADD_TS_RESP;
22912 case WLAN_HAL_DEL_TS_RSP:
22913 return WDI_DEL_TS_RESP;
22914 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22915 return WDI_UPD_EDCA_PRMS_RESP;
22916 case WLAN_HAL_ADD_BA_RSP:
22917 return WDI_ADD_BA_RESP;
22918 case WLAN_HAL_DEL_BA_RSP:
22919 return WDI_DEL_BA_RESP;
22920#ifdef FEATURE_WLAN_CCX
22921 case WLAN_HAL_TSM_STATS_RSP:
22922 return WDI_TSM_STATS_RESP;
22923#endif
22924 case WLAN_HAL_CH_SWITCH_RSP:
22925 return WDI_CH_SWITCH_RESP;
22926 case WLAN_HAL_SET_LINK_ST_RSP:
22927 return WDI_SET_LINK_ST_RESP;
22928 case WLAN_HAL_GET_STATS_RSP:
22929 return WDI_GET_STATS_RESP;
22930 case WLAN_HAL_UPDATE_CFG_RSP:
22931 return WDI_UPDATE_CFG_RESP;
22932 case WLAN_HAL_ADD_BA_SESSION_RSP:
22933 return WDI_ADD_BA_SESSION_RESP;
22934 case WLAN_HAL_TRIGGER_BA_RSP:
22935 return WDI_TRIGGER_BA_RESP;
22936 case WLAN_HAL_UPDATE_BEACON_RSP:
22937 return WDI_UPD_BCON_PRMS_RESP;
22938 case WLAN_HAL_SEND_BEACON_RSP:
22939 return WDI_SND_BCON_RESP;
22940 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22941 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22942 /*Indications*/
22943 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22944 return WDI_HAL_RSSI_NOTIFICATION_IND;
22945 case WLAN_HAL_MISSED_BEACON_IND:
22946 return WDI_HAL_MISSED_BEACON_IND;
22947 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22948 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22949 case WLAN_HAL_MIC_FAILURE_IND:
22950 return WDI_HAL_MIC_FAILURE_IND;
22951 case WLAN_HAL_FATAL_ERROR_IND:
22952 return WDI_HAL_FATAL_ERROR_IND;
22953 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22954 return WDI_HAL_DEL_STA_IND;
22955 case WLAN_HAL_COEX_IND:
22956 return WDI_HAL_COEX_IND;
22957 case WLAN_HAL_OTA_TX_COMPL_IND:
22958 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022959 case WLAN_HAL_P2P_NOA_ATTR_IND:
22960 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022961 case WLAN_HAL_P2P_NOA_START_IND:
22962 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022963 case WLAN_HAL_TX_PER_HIT_IND:
22964 return WDI_HAL_TX_PER_HIT_IND;
22965 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22966 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussainfc753992013-08-09 15:09:58 -070022967 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
22968 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schangd82195a2013-03-13 18:41:24 -070022969 case WLAN_HAL_SET_TX_POWER_RSP:
22970 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022971 case WLAN_HAL_SET_P2P_GONOA_RSP:
22972 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022973#ifdef FEATURE_WLAN_TDLS
22974 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22975 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22976 case WLAN_HAL_TDLS_IND:
22977 return WDI_HAL_TDLS_IND;
22978#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022979 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022980 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022981 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022982 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022983 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022984 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022985 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022986 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022987 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022988 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022989 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022990 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022991 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022992 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022993 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022994 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022995 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022996 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022997 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22998 return WDI_SET_BEACON_FILTER_RESP;
22999 case WLAN_HAL_REM_BCN_FILTER_RSP:
23000 return WDI_REM_BEACON_FILTER_RESP;
23001 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23002 return WDI_SET_RSSI_THRESHOLDS_RESP;
23003 case WLAN_HAL_HOST_OFFLOAD_RSP:
23004 return WDI_HOST_OFFLOAD_RESP;
23005 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23006 return WDI_WOWL_ADD_BC_PTRN_RESP;
23007 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23008 return WDI_WOWL_DEL_BC_PTRN_RESP;
23009 case WLAN_HAL_ENTER_WOWL_RSP:
23010 return WDI_WOWL_ENTER_RESP;
23011 case WLAN_HAL_EXIT_WOWL_RSP:
23012 return WDI_WOWL_EXIT_RESP;
23013 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23014 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23015 case WLAN_HAL_DOWNLOAD_NV_RSP:
23016 return WDI_NV_DOWNLOAD_RESP;
23017 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23018 return WDI_FLUSH_AC_RESP;
23019 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23020 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023021 case WLAN_HAL_PROCESS_PTT_RSP:
23022 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023023 case WLAN_HAL_ADD_STA_SELF_RSP:
23024 return WDI_ADD_STA_SELF_RESP;
23025case WLAN_HAL_DEL_STA_SELF_RSP:
23026 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023027#ifdef FEATURE_OEM_DATA_SUPPORT
23028 case WLAN_HAL_START_OEM_DATA_RSP:
23029 return WDI_START_OEM_DATA_RESP;
23030#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023031 case WLAN_HAL_HOST_RESUME_RSP:
23032 return WDI_HOST_RESUME_RESP;
23033 case WLAN_HAL_KEEP_ALIVE_RSP:
23034 return WDI_KEEP_ALIVE_RESP;
23035#ifdef FEATURE_WLAN_SCAN_PNO
23036 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23037 return WDI_SET_PREF_NETWORK_RESP;
23038 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023039 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023040 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23041 return WDI_UPDATE_SCAN_PARAMS_RESP;
23042 case WLAN_HAL_PREF_NETW_FOUND_IND:
23043 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23044#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023045#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023046 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23047 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023048#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023049 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23050 return WDI_SET_TX_PER_TRACKING_RESP;
23051#ifdef WLAN_FEATURE_PACKET_FILTERING
23052 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23053 return WDI_8023_MULTICAST_LIST_RESP;
23054 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23055 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23056 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23057 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23058 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23059 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23060#endif // WLAN_FEATURE_PACKET_FILTERING
23061
23062 case WLAN_HAL_DUMP_COMMAND_RSP:
23063 return WDI_HAL_DUMP_CMD_RESP;
23064 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23065 return WDI_SET_POWER_PARAMS_RESP;
23066#ifdef WLAN_FEATURE_VOWIFI_11R
23067 case WLAN_HAL_AGGR_ADD_TS_RSP:
23068 return WDI_AGGR_ADD_TS_RESP;
23069#endif
23070
23071#ifdef WLAN_FEATURE_GTK_OFFLOAD
23072 case WLAN_HAL_GTK_OFFLOAD_RSP:
23073 return WDI_GTK_OFFLOAD_RESP;
23074 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23075 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23076#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23077#ifdef WLAN_WAKEUP_EVENTS
23078 case WLAN_HAL_WAKE_REASON_IND:
23079 return WDI_HAL_WAKE_REASON_IND;
23080#endif // WLAN_WAKEUP_EVENTS
23081
23082 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23083 return WDI_SET_TM_LEVEL_RESP;
23084 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23085 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023086#ifdef WLAN_FEATURE_11AC
23087 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23088 return WDI_UPDATE_VHT_OP_MODE_RESP;
23089#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023090#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23091 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23092 return WDI_GET_ROAM_RSSI_RESP;
23093#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070023094
Leo Chang00bc9132013-08-01 19:21:11 -070023095#ifdef FEATURE_WLAN_LPHB
23096 case WLAN_HAL_LPHB_IND:
Leo Chang8d19a5f2013-09-26 13:32:26 -070023097 return WDI_HAL_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070023098 case WLAN_HAL_LPHB_CFG_RSP:
23099 return WDI_LPHB_CFG_RESP;
23100#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070023101
23102 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23103 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Ma365933a2013-08-14 15:59:08 -070023104 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23105 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshi96d77342013-07-23 08:37:49 -070023106
Rajeev3db91f12013-10-05 11:03:42 +053023107#ifdef FEATURE_WLAN_BATCH_SCAN
23108 case WLAN_HAL_BATCHSCAN_SET_RSP:
23109 return WDI_SET_BATCH_SCAN_RESP;
23110 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23111 return WDI_BATCHSCAN_RESULT_IND;
23112#endif // FEATURE_WLAN_BATCH_SCAN
23113
Leo Changd95d6622013-12-15 15:18:55 -080023114#ifdef FEATURE_WLAN_CH_AVOID
23115 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23116 return WDI_HAL_CH_AVOID_IND;
23117#endif /* FEATURE_WLAN_CH_AVOID */
23118
Jeff Johnson295189b2012-06-20 16:38:30 -070023119 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023120 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023121 }
23122
23123}/*HAL_2_WDI_RSP_TYPE*/
23124
23125
23126/*Convert WDI driver type into HAL driver type*/
23127WPT_STATIC WPT_INLINE tDriverType
23128WDI_2_HAL_DRV_TYPE
23129(
23130 WDI_DriverType wdiDriverType
23131)
23132{
Jeff Johnsone7245742012-09-05 17:12:55 -070023133 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023134 the chances of getting inlined*/
23135 switch( wdiDriverType )
23136 {
23137 case WDI_DRIVER_TYPE_PRODUCTION:
23138 return eDRIVER_TYPE_PRODUCTION;
23139 case WDI_DRIVER_TYPE_MFG:
23140 return eDRIVER_TYPE_MFG;
23141 case WDI_DRIVER_TYPE_DVT:
23142 return eDRIVER_TYPE_DVT;
23143 }
23144
Jeff Johnsone7245742012-09-05 17:12:55 -070023145 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023146}/*WDI_2_HAL_DRV_TYPE*/
23147
23148
23149/*Convert WDI stop reason into HAL stop reason*/
23150WPT_STATIC WPT_INLINE tHalStopType
23151WDI_2_HAL_STOP_REASON
23152(
23153 WDI_StopType wdiDriverType
23154)
23155{
Jeff Johnsone7245742012-09-05 17:12:55 -070023156 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023157 the chances of getting inlined*/
23158 switch( wdiDriverType )
23159 {
23160 case WDI_STOP_TYPE_SYS_RESET:
23161 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070023162 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23163 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023164 case WDI_STOP_TYPE_RF_KILL:
23165 return HAL_STOP_TYPE_RF_KILL;
23166 }
23167
Jeff Johnsone7245742012-09-05 17:12:55 -070023168 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023169}/*WDI_2_HAL_STOP_REASON*/
23170
23171
23172/*Convert WDI scan mode type into HAL scan mode type*/
23173WPT_STATIC WPT_INLINE eHalSysMode
23174WDI_2_HAL_SCAN_MODE
23175(
23176 WDI_ScanMode wdiScanMode
23177)
23178{
Jeff Johnsone7245742012-09-05 17:12:55 -070023179 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023180 the chances of getting inlined*/
23181 switch( wdiScanMode )
23182 {
23183 case WDI_SCAN_MODE_NORMAL:
23184 return eHAL_SYS_MODE_NORMAL;
23185 case WDI_SCAN_MODE_LEARN:
23186 return eHAL_SYS_MODE_LEARN;
23187 case WDI_SCAN_MODE_SCAN:
23188 return eHAL_SYS_MODE_SCAN;
23189 case WDI_SCAN_MODE_PROMISC:
23190 return eHAL_SYS_MODE_PROMISC;
23191 case WDI_SCAN_MODE_SUSPEND_LINK:
23192 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023193 case WDI_SCAN_MODE_ROAM_SCAN:
23194 return eHAL_SYS_MODE_ROAM_SCAN;
23195 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23196 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023197 }
23198
Jeff Johnsone7245742012-09-05 17:12:55 -070023199 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023200}/*WDI_2_HAL_SCAN_MODE*/
23201
23202/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023203WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023204WDI_2_HAL_SEC_CH_OFFSET
23205(
23206 WDI_HTSecondaryChannelOffset wdiSecChOffset
23207)
23208{
Jeff Johnsone7245742012-09-05 17:12:55 -070023209 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023210 the chances of getting inlined*/
23211 switch( wdiSecChOffset )
23212 {
23213 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023214 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023216 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023217 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023218 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23219#ifdef WLAN_FEATURE_11AC
23220 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23221 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23222 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23223 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23224 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23225 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23226 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23227 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23228 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23229 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23230 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23231 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23232 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23233 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23234#endif
23235 default:
23236 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023237 }
23238
Jeff Johnsone7245742012-09-05 17:12:55 -070023239 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023240}/*WDI_2_HAL_SEC_CH_OFFSET*/
23241
23242/*Convert WDI BSS type into HAL BSS type*/
23243WPT_STATIC WPT_INLINE tSirBssType
23244WDI_2_HAL_BSS_TYPE
23245(
23246 WDI_BssType wdiBSSType
23247)
23248{
Jeff Johnsone7245742012-09-05 17:12:55 -070023249 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023250 the chances of getting inlined*/
23251 switch( wdiBSSType )
23252 {
23253 case WDI_INFRASTRUCTURE_MODE:
23254 return eSIR_INFRASTRUCTURE_MODE;
23255 case WDI_INFRA_AP_MODE:
23256 return eSIR_INFRA_AP_MODE;
23257 case WDI_IBSS_MODE:
23258 return eSIR_IBSS_MODE;
23259 case WDI_BTAMP_STA_MODE:
23260 return eSIR_BTAMP_STA_MODE;
23261 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023262 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023263 case WDI_BSS_AUTO_MODE:
23264 return eSIR_AUTO_MODE;
23265 }
23266
Jeff Johnsone7245742012-09-05 17:12:55 -070023267 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023268}/*WDI_2_HAL_BSS_TYPE*/
23269
23270/*Convert WDI NW type into HAL NW type*/
23271WPT_STATIC WPT_INLINE tSirNwType
23272WDI_2_HAL_NW_TYPE
23273(
23274 WDI_NwType wdiNWType
23275)
23276{
Jeff Johnsone7245742012-09-05 17:12:55 -070023277 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023278 the chances of getting inlined*/
23279 switch( wdiNWType )
23280 {
23281 case WDI_11A_NW_TYPE:
23282 return eSIR_11A_NW_TYPE;
23283 case WDI_11B_NW_TYPE:
23284 return eSIR_11B_NW_TYPE;
23285 case WDI_11G_NW_TYPE:
23286 return eSIR_11G_NW_TYPE;
23287 case WDI_11N_NW_TYPE:
23288 return eSIR_11N_NW_TYPE;
23289 }
23290
Jeff Johnsone7245742012-09-05 17:12:55 -070023291 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023292}/*WDI_2_HAL_NW_TYPE*/
23293
23294/*Convert WDI chanel bonding type into HAL cb type*/
23295WPT_STATIC WPT_INLINE ePhyChanBondState
23296WDI_2_HAL_CB_STATE
23297(
23298 WDI_PhyChanBondState wdiCbState
23299)
23300{
Jeff Johnsone7245742012-09-05 17:12:55 -070023301 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023302 the chances of getting inlined*/
23303 switch ( wdiCbState )
23304 {
23305 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23306 return PHY_SINGLE_CHANNEL_CENTERED;
23307 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23308 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23309 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23310 return PHY_DOUBLE_CHANNEL_CENTERED;
23311 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23312 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023313#ifdef WLAN_FEATURE_11AC
23314 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23315 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23316 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23317 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23318 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23319 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23320 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23321 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23322 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23323 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23324 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23325 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23326 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23327 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23328#endif
23329 case WDI_MAX_CB_STATE:
23330 default:
23331 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023332 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023333
Jeff Johnson295189b2012-06-20 16:38:30 -070023334 return PHY_CHANNEL_BONDING_STATE_MAX;
23335}/*WDI_2_HAL_CB_STATE*/
23336
23337/*Convert WDI chanel bonding type into HAL cb type*/
23338WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23339WDI_2_HAL_HT_OPER_MODE
23340(
23341 WDI_HTOperatingMode wdiHTOperMode
23342)
23343{
Jeff Johnsone7245742012-09-05 17:12:55 -070023344 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023345 the chances of getting inlined*/
23346 switch ( wdiHTOperMode )
23347 {
23348 case WDI_HT_OP_MODE_PURE:
23349 return eSIR_HT_OP_MODE_PURE;
23350 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23351 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23352 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23353 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23354 case WDI_HT_OP_MODE_MIXED:
23355 return eSIR_HT_OP_MODE_MIXED;
23356 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023357
Jeff Johnson295189b2012-06-20 16:38:30 -070023358 return eSIR_HT_OP_MODE_MAX;
23359}/*WDI_2_HAL_HT_OPER_MODE*/
23360
23361/*Convert WDI mimo PS type into HAL mimo PS type*/
23362WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23363WDI_2_HAL_MIMO_PS
23364(
23365 WDI_HTMIMOPowerSaveState wdiHTOperMode
23366)
23367{
Jeff Johnsone7245742012-09-05 17:12:55 -070023368 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023369 the chances of getting inlined*/
23370 switch ( wdiHTOperMode )
23371 {
23372 case WDI_HT_MIMO_PS_STATIC:
23373 return eSIR_HT_MIMO_PS_STATIC;
23374 case WDI_HT_MIMO_PS_DYNAMIC:
23375 return eSIR_HT_MIMO_PS_DYNAMIC;
23376 case WDI_HT_MIMO_PS_NA:
23377 return eSIR_HT_MIMO_PS_NA;
23378 case WDI_HT_MIMO_PS_NO_LIMIT:
23379 return eSIR_HT_MIMO_PS_NO_LIMIT;
23380 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023381
Jeff Johnson295189b2012-06-20 16:38:30 -070023382 return eSIR_HT_MIMO_PS_MAX;
23383}/*WDI_2_HAL_MIMO_PS*/
23384
23385/*Convert WDI ENC type into HAL ENC type*/
23386WPT_STATIC WPT_INLINE tAniEdType
23387WDI_2_HAL_ENC_TYPE
23388(
23389 WDI_EncryptType wdiEncType
23390)
23391{
Jeff Johnsone7245742012-09-05 17:12:55 -070023392 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023393 the chances of getting inlined*/
23394 switch ( wdiEncType )
23395 {
23396 case WDI_ENCR_NONE:
23397 return eSIR_ED_NONE;
23398
23399 case WDI_ENCR_WEP40:
23400 return eSIR_ED_WEP40;
23401
23402 case WDI_ENCR_WEP104:
23403 return eSIR_ED_WEP104;
23404
23405 case WDI_ENCR_TKIP:
23406 return eSIR_ED_TKIP;
23407
23408 case WDI_ENCR_CCMP:
23409 return eSIR_ED_CCMP;
23410
23411 case WDI_ENCR_AES_128_CMAC:
23412 return eSIR_ED_AES_128_CMAC;
23413#if defined(FEATURE_WLAN_WAPI)
23414 case WDI_ENCR_WPI:
23415 return eSIR_ED_WPI;
23416#endif
23417 default:
23418 return eSIR_ED_NOT_IMPLEMENTED;
23419 }
23420
23421}/*WDI_2_HAL_ENC_TYPE*/
23422
23423/*Convert WDI WEP type into HAL WEP type*/
23424WPT_STATIC WPT_INLINE tAniWepType
23425WDI_2_HAL_WEP_TYPE
23426(
23427 WDI_WepType wdiWEPType
23428)
23429{
Jeff Johnsone7245742012-09-05 17:12:55 -070023430 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023431 the chances of getting inlined*/
23432 switch ( wdiWEPType )
23433 {
23434 case WDI_WEP_STATIC:
23435 return eSIR_WEP_STATIC;
23436
23437 case WDI_WEP_DYNAMIC:
23438 return eSIR_WEP_DYNAMIC;
23439 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023440
Jeff Johnson295189b2012-06-20 16:38:30 -070023441 return eSIR_WEP_MAX;
23442}/*WDI_2_HAL_WEP_TYPE*/
23443
23444WPT_STATIC WPT_INLINE tSirLinkState
23445WDI_2_HAL_LINK_STATE
23446(
23447 WDI_LinkStateType wdiLinkState
23448)
23449{
Jeff Johnsone7245742012-09-05 17:12:55 -070023450 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023451 the chances of getting inlined*/
23452 switch ( wdiLinkState )
23453 {
23454 case WDI_LINK_IDLE_STATE:
23455 return eSIR_LINK_IDLE_STATE;
23456
23457 case WDI_LINK_PREASSOC_STATE:
23458 return eSIR_LINK_PREASSOC_STATE;
23459
23460 case WDI_LINK_POSTASSOC_STATE:
23461 return eSIR_LINK_POSTASSOC_STATE;
23462
23463 case WDI_LINK_AP_STATE:
23464 return eSIR_LINK_AP_STATE;
23465
23466 case WDI_LINK_IBSS_STATE:
23467 return eSIR_LINK_IBSS_STATE;
23468
23469 case WDI_LINK_BTAMP_PREASSOC_STATE:
23470 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23471
23472 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23473 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23474
23475 case WDI_LINK_BTAMP_AP_STATE:
23476 return eSIR_LINK_BTAMP_AP_STATE;
23477
23478 case WDI_LINK_BTAMP_STA_STATE:
23479 return eSIR_LINK_BTAMP_STA_STATE;
23480
23481 case WDI_LINK_LEARN_STATE:
23482 return eSIR_LINK_LEARN_STATE;
23483
23484 case WDI_LINK_SCAN_STATE:
23485 return eSIR_LINK_SCAN_STATE;
23486
23487 case WDI_LINK_FINISH_SCAN_STATE:
23488 return eSIR_LINK_FINISH_SCAN_STATE;
23489
23490 case WDI_LINK_INIT_CAL_STATE:
23491 return eSIR_LINK_INIT_CAL_STATE;
23492
23493 case WDI_LINK_FINISH_CAL_STATE:
23494 return eSIR_LINK_FINISH_CAL_STATE;
23495
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 case WDI_LINK_LISTEN_STATE:
23497 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023498
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053023499 case WDI_LINK_SEND_ACTION_STATE:
23500 return eSIR_LINK_SEND_ACTION_STATE;
23501
Jeff Johnson295189b2012-06-20 16:38:30 -070023502 default:
23503 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023504 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023505}
23506
Jeff Johnsone7245742012-09-05 17:12:55 -070023507/*Translate a STA Context from WDI into HAL*/
23508WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023509void
23510WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023511(
Jeff Johnson295189b2012-06-20 16:38:30 -070023512 tConfigStaParams* phalConfigSta,
23513 WDI_ConfigStaReqInfoType* pwdiConfigSta
23514)
23515{
23516 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023517#ifdef WLAN_FEATURE_11AC
23518 /* Get the Version 1 Handler */
23519 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23520 if (WDI_getFwWlanFeatCaps(DOT11AC))
23521 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023522 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023523 }
23524#endif
23525 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 the chances of getting inlined*/
23527
Jeff Johnsone7245742012-09-05 17:12:55 -070023528 wpalMemoryCopy(phalConfigSta->bssId,
23529 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23530
23531 wpalMemoryCopy(phalConfigSta->staMac,
23532 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023533
23534 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23535 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23536 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23537 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23538 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23539 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23540 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23541 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23542 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23543 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23544 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23545 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23546 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23547 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23548 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23549 phalConfigSta->action = pwdiConfigSta->wdiAction;
23550 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23551 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23552 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23553 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23554 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23555 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23556 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023557
Jeff Johnson295189b2012-06-20 16:38:30 -070023558 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23559
Jeff Johnsone7245742012-09-05 17:12:55 -070023560 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023561 pwdiConfigSta->wdiSupportedRates.opRateMode;
23562 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23563 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023564 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023565 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23566 }
23567 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23568 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023569 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023570 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23571 }
23572 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23573 {
23574 phalConfigSta->supportedRates.aniLegacyRates[i] =
23575 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23576 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023577 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023578 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23579 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23580 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023581 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023582 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23583 }
23584 phalConfigSta->supportedRates.rxHighestDataRate =
23585 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23586
Jeff Johnsone7245742012-09-05 17:12:55 -070023587#ifdef WLAN_FEATURE_11AC
23588 if(phalConfigSta_V1 != NULL)
23589 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023590 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23591 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23592 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23593 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023594 }
23595#endif
23596
Jeff Johnson295189b2012-06-20 16:38:30 -070023597 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023598
Jeff Johnsone7245742012-09-05 17:12:55 -070023599#ifdef WLAN_FEATURE_11AC
23600 if(phalConfigSta_V1 != NULL)
23601 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023602 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23603 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023604 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023605 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23606 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23607
Jeff Johnsone7245742012-09-05 17:12:55 -070023608 }
23609#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023610}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023611
23612/*Translate a Rate set info from WDI into HAL*/
23613WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023614WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023615(
Jeff Johnson295189b2012-06-20 16:38:30 -070023616 tSirMacRateSet* pHalRateSet,
23617 WDI_RateSet* pwdiRateSet
23618)
23619{
Jeff Johnsone7245742012-09-05 17:12:55 -070023620 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23622
23623 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23624 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23625
23626 for ( i = 0; i < pHalRateSet->numRates; i++ )
23627 {
23628 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23629 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023630
Jeff Johnson295189b2012-06-20 16:38:30 -070023631}/*WDI_CopyWDIRateSetToHALRateSet*/
23632
23633
23634/*Translate an EDCA Parameter Record from WDI into HAL*/
23635WPT_STATIC WPT_INLINE void
23636WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023637(
Jeff Johnson295189b2012-06-20 16:38:30 -070023638 tSirMacEdcaParamRecord* phalEdcaParam,
23639 WDI_EdcaParamRecord* pWDIEdcaParam
23640)
23641{
Jeff Johnsone7245742012-09-05 17:12:55 -070023642 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023643 the chances of getting inlined*/
23644
23645 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23646 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23647 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23648 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23649
23650 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23651 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23652 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23653}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23654
23655
23656/*Copy a management frame header from WDI fmt into HAL fmt*/
23657WPT_STATIC WPT_INLINE void
23658WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23659(
23660 tSirMacMgmtHdr* pmacMgmtHdr,
23661 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23662)
23663{
23664 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23665 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23666 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23667 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23668 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23669 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23670 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23671 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23672 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23673 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23674 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23675
23676 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23677 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23678
Jeff Johnsone7245742012-09-05 17:12:55 -070023679 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023680 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023681 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023682 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023683 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023684 pwdiMacMgmtHdr->bssId, 6);
23685
23686 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23687 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23688 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23689
23690}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23691
23692
23693/*Copy config bss parameters from WDI fmt into HAL fmt*/
23694WPT_STATIC WPT_INLINE void
23695WDI_CopyWDIConfigBSSToHALConfigBSS
23696(
23697 tConfigBssParams* phalConfigBSS,
23698 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23699)
23700{
23701
23702 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023703#ifdef WLAN_FEATURE_11AC
23704 /* Get the Version 1 Handler */
23705 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23706 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023707 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023708#endif
23709
Jeff Johnson295189b2012-06-20 16:38:30 -070023710 wpalMemoryCopy( phalConfigBSS->bssId,
23711 pwdiConfigBSS->macBSSID,
23712 WDI_MAC_ADDR_LEN);
23713
23714#ifdef HAL_SELF_STA_PER_BSS
23715 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23716 pwdiConfigBSS->macSelfAddr,
23717 WDI_MAC_ADDR_LEN);
23718#endif
23719
23720 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23721
23722 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23723 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23724
Jeff Johnsone7245742012-09-05 17:12:55 -070023725 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023726 pwdiConfigBSS->ucShortSlotTimeSupported;
23727 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23728 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23729 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23730 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23731 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23734 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23735 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23736 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23737 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23738 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23739 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23740 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23741 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23742 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23743 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23744
Jeff Johnsone7245742012-09-05 17:12:55 -070023745 phalConfigBSS->htOperMode =
23746 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023747
23748 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23749 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23750 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23751 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23752
23753#ifdef WLAN_FEATURE_VOWIFI
23754 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23755#endif
23756
23757 /*! Used 32 as magic number because that is how the ssid is declared inside the
23758 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023760 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23761 pwdiConfigBSS->wdiSSID.ucLength : 32;
23762 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023763 pwdiConfigBSS->wdiSSID.sSSID,
23764 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023765
23766 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23767 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023768
Jeff Johnson295189b2012-06-20 16:38:30 -070023769 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23770 &pwdiConfigBSS->wdiRateSet);
23771
23772 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23773
23774 if(phalConfigBSS->edcaParamsValid)
23775 {
23776 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23777 &pwdiConfigBSS->wdiBEEDCAParams);
23778 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23779 &pwdiConfigBSS->wdiBKEDCAParams);
23780 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23781 &pwdiConfigBSS->wdiVIEDCAParams);
23782 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23783 &pwdiConfigBSS->wdiVOEDCAParams);
23784 }
23785
Jeff Johnsone7245742012-09-05 17:12:55 -070023786 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023787
23788 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23789
23790#ifdef WLAN_FEATURE_VOWIFI_11R
23791
Jeff Johnsone7245742012-09-05 17:12:55 -070023792 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023794
Jeff Johnson295189b2012-06-20 16:38:30 -070023795 if( phalConfigBSS->extSetStaKeyParamValid )
23796 {
23797 /*-----------------------------------------------------------------------
23798 Copy the STA Key parameters into the HAL message
23799 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023800 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023801 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23802
Jeff Johnsone7245742012-09-05 17:12:55 -070023803 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023804 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23805
23806 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23807
23808 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23809
23810 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23811
Jeff Johnson295189b2012-06-20 16:38:30 -070023812 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23813 keyIndex++)
23814 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023815 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023816 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23817 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23818 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23819 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23820 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23821 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023822 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023823 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023824 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023825 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023826 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023827 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23828 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023829 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023830 WDI_MAX_KEY_LENGTH);
23831 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023832 }
23833 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23834 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023835 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023836 sizeof(phalConfigBSS->extSetStaKeyParam) );
23837 }
23838
23839#endif /*WLAN_FEATURE_VOWIFI_11R*/
23840
Jeff Johnsone7245742012-09-05 17:12:55 -070023841#ifdef WLAN_FEATURE_11AC
23842 if(phalConfigBSS_V1 != NULL)
23843 {
23844 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23845 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23846 }
23847#endif
23848
Jeff Johnson295189b2012-06-20 16:38:30 -070023849}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23850
23851
Jeff Johnsone7245742012-09-05 17:12:55 -070023852/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023853 pointed to by user data */
23854WPT_STATIC WPT_INLINE void
23855WDI_ExtractRequestCBFromEvent
23856(
23857 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023858 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023859 void** ppUserData
23860)
23861{
23862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23863 switch ( pEvent->wdiRequest )
23864 {
23865 case WDI_START_REQ:
23866 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23867 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23868 break;
23869 case WDI_STOP_REQ:
23870 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23871 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23872 break;
23873 case WDI_INIT_SCAN_REQ:
23874 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23875 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23876 break;
23877 case WDI_START_SCAN_REQ:
23878 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23879 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23880 break;
23881 case WDI_END_SCAN_REQ:
23882 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23883 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23884 break;
23885 case WDI_FINISH_SCAN_REQ:
23886 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23887 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23888 break;
23889 case WDI_JOIN_REQ:
23890 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23891 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23892 break;
23893 case WDI_CONFIG_BSS_REQ:
23894 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23895 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23896 break;
23897 case WDI_DEL_BSS_REQ:
23898 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23899 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23900 break;
23901 case WDI_POST_ASSOC_REQ:
23902 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23903 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23904 break;
23905 case WDI_DEL_STA_REQ:
23906 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23907 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23908 break;
23909 case WDI_DEL_STA_SELF_REQ:
23910 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23911 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23912 break;
23913
23914 case WDI_SET_BSS_KEY_REQ:
23915 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23916 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23917 break;
23918 case WDI_RMV_BSS_KEY_REQ:
23919 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23920 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23921 break;
23922 case WDI_SET_STA_KEY_REQ:
23923 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23924 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23925 break;
23926 case WDI_RMV_STA_KEY_REQ:
23927 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23928 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23929 break;
23930 case WDI_ADD_TS_REQ:
23931 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23932 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23933 break;
23934 case WDI_DEL_TS_REQ:
23935 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23936 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23937 break;
23938 case WDI_UPD_EDCA_PRMS_REQ:
23939 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23940 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23941 break;
23942 case WDI_ADD_BA_SESSION_REQ:
23943 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23944 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23945 break;
23946 case WDI_DEL_BA_REQ:
23947 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23948 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23949 break;
23950#ifdef FEATURE_WLAN_CCX
23951 case WDI_TSM_STATS_REQ:
23952 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23953 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23954 break;
23955#endif
23956 case WDI_CH_SWITCH_REQ:
23957 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23958 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23959 break;
23960 case WDI_CONFIG_STA_REQ:
23961 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23962 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23963 break;
23964 case WDI_SET_LINK_ST_REQ:
23965 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23966 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23967 break;
23968 case WDI_GET_STATS_REQ:
23969 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23970 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23971 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023972#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23973 case WDI_GET_ROAM_RSSI_REQ:
23974 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23975 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23976 break;
23977#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023978 case WDI_UPDATE_CFG_REQ:
23979 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23980 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23981 break;
23982 case WDI_ADD_BA_REQ:
23983 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23984 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23985 break;
23986 case WDI_TRIGGER_BA_REQ:
23987 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23988 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23989 break;
23990 case WDI_UPD_BCON_PRMS_REQ:
23991 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23992 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23993 break;
23994 case WDI_SND_BCON_REQ:
23995 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23996 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23997 break;
23998 case WDI_ENTER_BMPS_REQ:
23999 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24000 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24001 break;
24002 case WDI_EXIT_BMPS_REQ:
24003 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24004 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24005 break;
24006 case WDI_ENTER_UAPSD_REQ:
24007 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24008 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24009 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024010 case WDI_EXIT_UAPSD_REQ:
24011 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24012 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24013 break;
24014 case WDI_SET_UAPSD_PARAM_REQ:
24015 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24016 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24017 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024018 case WDI_UPDATE_UAPSD_PARAM_REQ:
24019 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24020 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24021 break;
24022 case WDI_CONFIGURE_RXP_FILTER_REQ:
24023 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24024 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24025 break;
24026 case WDI_SET_BEACON_FILTER_REQ:
24027 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24028 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24029 break;
24030 case WDI_REM_BEACON_FILTER_REQ:
24031 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24032 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024033 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024034 case WDI_SET_RSSI_THRESHOLDS_REQ:
24035 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24036 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24037 break;
24038 case WDI_HOST_OFFLOAD_REQ:
24039 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24040 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24041 break;
24042 case WDI_WOWL_ADD_BC_PTRN_REQ:
24043 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24044 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24045 break;
24046 case WDI_WOWL_DEL_BC_PTRN_REQ:
24047 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24048 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24049 break;
24050 case WDI_WOWL_ENTER_REQ:
24051 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24052 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24053 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024054 case WDI_WOWL_EXIT_REQ:
24055 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24056 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24057 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024058 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24059 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24060 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24061 break;
24062 case WDI_FLUSH_AC_REQ:
24063 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24064 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24065 break;
24066 case WDI_BTAMP_EVENT_REQ:
24067 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24068 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24069 break;
24070 case WDI_KEEP_ALIVE_REQ:
24071 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24072 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24073 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024074#if defined FEATURE_WLAN_SCAN_PNO
24075 case WDI_SET_PREF_NETWORK_REQ:
24076 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24077 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24078 break;
24079 case WDI_SET_RSSI_FILTER_REQ:
24080 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24081 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24082 break;
24083 case WDI_UPDATE_SCAN_PARAMS_REQ:
24084 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24085 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24086 break;
24087#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024088 case WDI_SET_TX_PER_TRACKING_REQ:
24089 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24090 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024091 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024092#if defined WLAN_FEATURE_PACKET_FILTERING
24093 case WDI_8023_MULTICAST_LIST_REQ:
24094 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24095 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24096 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024097 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24098 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24099 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24100 break;
24101 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24102 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24103 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24104 break;
24105 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24106 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24107 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24108 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024109#endif
24110 case WDI_SET_POWER_PARAMS_REQ:
24111 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24112 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24113 break;
24114#if defined WLAN_FEATURE_GTK_OFFLOAD
24115 case WDI_GTK_OFFLOAD_REQ:
24116 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24117 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24118 break;
24119 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24120 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24121 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24122 break;
24123#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024124
Jeff Johnson295189b2012-06-20 16:38:30 -070024125 default:
24126 *ppfnReqCB = NULL;
24127 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024128 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024129 }
24130}/*WDI_ExtractRequestCBFromEvent*/
24131
24132
24133/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024134 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024135 frame xtl is enabled for a particular STA.
24136
24137 WDI_PostAssocReq must have been called.
24138
Jeff Johnsone7245742012-09-05 17:12:55 -070024139 @param uSTAIdx: STA index
24140
Jeff Johnson295189b2012-06-20 16:38:30 -070024141 @see WDI_PostAssocReq
24142 @return Result of the function call
24143*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024144wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024145WDI_IsHwFrameTxTranslationCapable
24146(
24147 wpt_uint8 uSTAIdx
24148)
24149{
Jeff Johnsone7245742012-09-05 17:12:55 -070024150 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024151 uma value*/
24152 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024153 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024154 ------------------------------------------------------------------------*/
24155 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24156 {
24157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24158 "WDI API call before module is initialized - Fail request");
24159
Jeff Johnsone7245742012-09-05 17:12:55 -070024160 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024161 }
24162
Gopichand Nakkalaba261272013-01-03 15:45:56 -080024163#ifdef WLAN_SOFTAP_VSTA_FEATURE
24164 if (IS_VSTA_IDX(uSTAIdx))
24165 {
24166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24167 "STA %d is a Virtual STA, "
24168 "HW frame translation disabled", uSTAIdx);
24169 return eWLAN_PAL_FALSE;
24170 }
24171#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024172
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 return gWDICb.bFrameTransEnabled;
24174}/*WDI_IsHwFrameTxTranslationCapable*/
24175
24176#ifdef FEATURE_WLAN_SCAN_PNO
24177/**
24178 @brief WDI_SetPreferredNetworkList
24179
Jeff Johnsone7245742012-09-05 17:12:55 -070024180 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024181 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024182
Jeff Johnson295189b2012-06-20 16:38:30 -070024183 wdiPNOScanCb: callback for passing back the response
24184 of the Set PNO operation received from the
24185 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024186
Jeff Johnson295189b2012-06-20 16:38:30 -070024187 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024188 callback
24189
Jeff Johnson295189b2012-06-20 16:38:30 -070024190 @return Result of the function call
24191*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024192WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024193WDI_SetPreferredNetworkReq
24194(
24195 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24196 WDI_PNOScanCb wdiPNOScanCb,
24197 void* pUserData
24198)
24199{
24200 WDI_EventInfoType wdiEventData = {{0}};
24201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24202
24203 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024204 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024205 ------------------------------------------------------------------------*/
24206 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24207 {
24208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24209 "WDI API call before module is initialized - Fail request");
24210
Jeff Johnsone7245742012-09-05 17:12:55 -070024211 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024212 }
24213
24214 /*------------------------------------------------------------------------
24215 Fill in Event data and post to the Main FSM
24216 ------------------------------------------------------------------------*/
24217 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024218 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024219 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024220 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024221 wdiEventData.pUserData = pUserData;
24222
24223 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24224}
24225
24226
24227/**
24228 @brief WDI_SetRssiFilterReq
24229
Jeff Johnsone7245742012-09-05 17:12:55 -070024230 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024231 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024232
Jeff Johnson295189b2012-06-20 16:38:30 -070024233 wdiRssiFilterCb: callback for passing back the response
24234 of the Set RSSI Filter operation received from the
24235 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024236
Jeff Johnson295189b2012-06-20 16:38:30 -070024237 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024238 callback
24239
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 @return Result of the function call
24241*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024242WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024243WDI_SetRssiFilterReq
24244(
24245 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24246 WDI_RssiFilterCb wdiRssiFilterCb,
24247 void* pUserData
24248)
24249{
24250 WDI_EventInfoType wdiEventData = {{0}};
24251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24252
24253 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024254 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024255 ------------------------------------------------------------------------*/
24256 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24257 {
24258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24259 "WDI API call before module is initialized - Fail request");
24260
Jeff Johnsone7245742012-09-05 17:12:55 -070024261 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024262 }
24263
24264 /*------------------------------------------------------------------------
24265 Fill in Event data and post to the Main FSM
24266 ------------------------------------------------------------------------*/
24267 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024268 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024269 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024270 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024271 wdiEventData.pUserData = pUserData;
24272
24273 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24274}/*WDI_SetRssiFilterReq*/
24275
24276/**
24277 @brief WDI_UpdateScanParamsReq
24278
Jeff Johnsone7245742012-09-05 17:12:55 -070024279 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024281
Jeff Johnson295189b2012-06-20 16:38:30 -070024282 wdiUpdateScanParamsCb: callback for passing back the response
24283 of the Set PNO operation received from the
24284 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024285
Jeff Johnson295189b2012-06-20 16:38:30 -070024286 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024287 callback
24288
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 @return Result of the function call
24290*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024291WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024292WDI_UpdateScanParamsReq
24293(
24294 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24295 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24296 void* pUserData
24297)
24298{
24299 WDI_EventInfoType wdiEventData = {{0}};
24300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24301
24302 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024303 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024304 ------------------------------------------------------------------------*/
24305 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24306 {
24307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24308 "WDI API call before module is initialized - Fail request");
24309
Jeff Johnsone7245742012-09-05 17:12:55 -070024310 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024311 }
24312
24313 /*------------------------------------------------------------------------
24314 Fill in Event data and post to the Main FSM
24315 ------------------------------------------------------------------------*/
24316 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024317 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024318 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024319 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024320 wdiEventData.pUserData = pUserData;
24321
24322 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24323}
24324
24325/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024326 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024327 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024328
24329 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024330 pwdiPNOScanReqParams: pointer to the info received
24331 from upper layers
24332 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024333 and its size
24334
Jeff Johnson295189b2012-06-20 16:38:30 -070024335 @return Result of the function call
24336*/
24337
24338WDI_Status
24339WDI_PackPreferredNetworkList
24340(
24341 WDI_ControlBlockType* pWDICtx,
24342 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24343 wpt_uint8** ppSendBuffer,
24344 wpt_uint16* pSize
24345)
24346{
Jeff Johnsone7245742012-09-05 17:12:55 -070024347 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 wpt_uint16 usDataOffset = 0;
24349 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024350 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024351 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024352 /*-----------------------------------------------------------------------
24353 Get message buffer
24354 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024355 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024356 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024357 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024358 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024359 {
24360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024361 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024362 pwdiPNOScanReqParams);
24363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024365 }
24366
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024367 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24368
Jeff Johnson295189b2012-06-20 16:38:30 -070024369 /*-------------------------------------------------------------------------
24370 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24371 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024372 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024373 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024374 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024375 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24376
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024377 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024378 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024379 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024380 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24382
24383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024384 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024385 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24386 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24387 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24388
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024389 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024390 {
24391 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024392 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024393 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24394
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024395 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024396 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024397 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024398
24399 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024400 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024401 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024402
24403 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024404 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024405 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024406
Jeff Johnsone7245742012-09-05 17:12:55 -070024407 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024408 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024409 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024410 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24411 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24412 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24413 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024414
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024415 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024416 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024417 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024418
24419 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024420 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024421 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24422
24423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024424 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024425 pPrefNetwListParams->aNetworks[i].ssId.length,
24426 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024427 }
24428
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024429 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024430 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024431 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24432 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24433 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24434
24435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024436 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024437 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024438 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24439 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24440
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024441 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024442 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024443 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024445 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024446 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24447 }
24448
24449 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024450 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024451 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24452 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24453 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024454 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024455
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024456 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024457 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024458 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024459
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024460 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024461 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24462 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24463 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024464 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024465
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024466 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024467 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024468 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024469
24470 /*Set the output values*/
24471 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024472 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024473
24474 return WDI_STATUS_SUCCESS;
24475}/*WDI_PackPreferredNetworkList*/
24476
24477/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024478 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024479 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024480
24481 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024482 pwdiPNOScanReqParams: pointer to the info received
24483 from upper layers
24484 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024485 and its size
24486
Jeff Johnson295189b2012-06-20 16:38:30 -070024487 @return Result of the function call
24488*/
24489
24490WDI_Status
24491WDI_PackPreferredNetworkListNew
24492(
24493 WDI_ControlBlockType* pWDICtx,
24494 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24495 wpt_uint8** ppSendBuffer,
24496 wpt_uint16* pSize
24497)
24498{
Jeff Johnsone7245742012-09-05 17:12:55 -070024499 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024500 wpt_uint16 usDataOffset = 0;
24501 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024502 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024503 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024504
24505 /*-----------------------------------------------------------------------
24506 Get message buffer
24507 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024508 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024509 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024510 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024511 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024512 {
24513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024514 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024515 pwdiPNOScanReqParams);
24516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024518 }
24519
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024520 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24521
Jeff Johnson295189b2012-06-20 16:38:30 -070024522 /*-------------------------------------------------------------------------
24523 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24524 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024525 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024526 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024527 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024528 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24529
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024530 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024531 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024532 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024533 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024534 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24535
24536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024537 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024538 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24539 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24540 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24541
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024542 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024543 {
24544 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024545 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024546 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24547
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024548 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024549 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024550 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024551
24552 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024553 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024554 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024555
24556 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024557 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024558 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024559
24560 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024561 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024562 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024563
Jeff Johnsone7245742012-09-05 17:12:55 -070024564 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024565 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024566 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024567 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24568
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024569 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024570 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024571 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024572
24573 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024574 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024575 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24576
24577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024578 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024579 pPrefNetwListParams->aNetworks[i].ssId.length,
24580 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024581 }
24582
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024583 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024584 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024585 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24586 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24587 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24588
24589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024590 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024591 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024592 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24593 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24594
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024595 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024596 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024597 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024598 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024599 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024600 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24601 }
24602
24603 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024604 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024605 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24606 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24607 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024608 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024609
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024610 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024611 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024612 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024613
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024614 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024615 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24616 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24617 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024618 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024619
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024620 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024621 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024622 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024623
Jeff Johnson295189b2012-06-20 16:38:30 -070024624
24625 /*Set the output values*/
24626 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024627 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024628
24629 return WDI_STATUS_SUCCESS;
24630}/*WDI_PackPreferredNetworkListNew*/
24631
24632/**
24633 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024634
24635 @param pWDICtx: pointer to the WLAN DAL context
24636 pEventData: pointer to the event information structure
24637
Jeff Johnson295189b2012-06-20 16:38:30 -070024638 @return Result of the function call
24639*/
24640WDI_Status
24641WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024642(
Jeff Johnson295189b2012-06-20 16:38:30 -070024643 WDI_ControlBlockType* pWDICtx,
24644 WDI_EventInfoType* pEventData
24645)
24646{
24647 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24648 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024649 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024650 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024651 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024652
24653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024654 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024655 -------------------------------------------------------------------------*/
24656 if (( NULL == pEventData ) ||
24657 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24658 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24659 {
24660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024661 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024664 }
24665
24666 /*-------------------------------------------------------------------------
24667 Pack the PNO request structure based on version
24668 -------------------------------------------------------------------------*/
24669 if ( pWDICtx->wdiPNOVersion > 0 )
24670 {
24671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024672 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024673 pWDICtx->wdiPNOVersion);
24674
24675 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24676 &pSendBuffer, &usSendSize);
24677 }
24678 else
24679 {
24680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024681 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024682 pWDICtx->wdiPNOVersion);
24683
24684 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24685 &pSendBuffer, &usSendSize);
24686 }
24687
24688 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24689 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24690 {
24691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024692 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024694 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024695 }
24696
24697 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024698 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024699
24700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024701 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024702 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024703 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24704 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024705}
24706
24707/**
24708 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024709
24710 @param pWDICtx: pointer to the WLAN DAL context
24711 pEventData: pointer to the event information structure
24712
Jeff Johnson295189b2012-06-20 16:38:30 -070024713 @see
24714 @return Result of the function call
24715*/
24716WDI_Status
24717WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024718(
Jeff Johnson295189b2012-06-20 16:38:30 -070024719 WDI_ControlBlockType* pWDICtx,
24720 WDI_EventInfoType* pEventData
24721)
24722{
24723 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24724 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024725 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024726 wpt_uint16 usDataOffset = 0;
24727 wpt_uint16 usSendSize = 0;
24728 wpt_uint8 ucRssiThreshold;
24729
24730 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024731 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024732 -------------------------------------------------------------------------*/
24733 if (( NULL == pEventData ) ||
24734 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24735 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24736 {
24737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024738 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024739 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024740 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024741 }
24742
24743 /*-----------------------------------------------------------------------
24744 Get message buffer
24745 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024746 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024747 sizeof(ucRssiThreshold),
24748 &pSendBuffer, &usDataOffset, &usSendSize))||
24749 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24750 {
24751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024752 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024753 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024756 }
24757
24758 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24759
Jeff Johnsone7245742012-09-05 17:12:55 -070024760 wpalMemoryCopy( pSendBuffer+usDataOffset,
24761 &ucRssiThreshold,
24762 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024763
24764 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024765 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024766
24767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024768 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024769 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024770 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24771 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024772}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024773#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24774/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024775 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024776
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024777 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024778 by the Device Interface
24779
24780 wdiRoamOffloadScancb: callback for passing back the response
24781 of the Roam Candidate Lookup Req operation received from the
24782 device
24783
24784 pUserData: user data will be passed back with the
24785 callback
24786 @return Result of the function call
24787*/
24788WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024789WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024790(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024791 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024792 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24793 void* pUserData
24794)
24795{
24796 WDI_EventInfoType wdiEventData = {{0}};
24797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24798
24799 /*------------------------------------------------------------------------
24800 Sanity Check
24801 ------------------------------------------------------------------------*/
24802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24803 {
24804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24805 "WDI API call before module is initialized - Fail request");
24806
24807 return WDI_STATUS_E_NOT_ALLOWED;
24808 }
24809
24810 /*------------------------------------------------------------------------
24811 Fill in Event data and post to the Main FSM
24812 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024813 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24814 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24815 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024816 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24817 wdiEventData.pUserData = pUserData;
24818
24819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24820}
24821
24822void
24823WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24824{
24825 switch (wdiEdType)
24826 {
24827 case WDI_ED_NONE:
24828 *EdType = eED_NONE;
24829 break;
24830 case WDI_ED_WEP40:
24831 case WDI_ED_WEP104:
24832 *EdType = eED_WEP;
24833 break;
24834 case WDI_ED_TKIP:
24835 *EdType = eED_TKIP;
24836 break;
24837 case WDI_ED_CCMP:
24838#ifdef WLAN_FEATURE_11W
24839 case WDI_ED_AES_128_CMAC:
24840#endif
24841 *EdType = eED_CCMP;
24842 break;
24843#ifdef FEATURE_WLAN_WAPI
24844 case WDI_ED_WPI:
24845 *EdType = eED_WPI;
24846 break;
24847#endif
24848 case WDI_ED_ANY:
24849 *EdType = eED_ANY;
24850 break;
24851
24852 default:
24853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24854 "%s: Unknown Encryption Type", __func__);
24855 break;
24856 }
24857}
24858
24859/**
24860 @brief Helper function to pack Start Roam Candidate Lookup
24861 Request parameters
24862
24863 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024864 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024865 from upper layers
24866 ppSendBuffer, pSize - out pointers of the packed buffer
24867 and its size
24868
24869 @return Result of the function call
24870*/
24871
24872WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024873WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024874(
24875 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024876 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024877 wpt_uint8** ppSendBuffer,
24878 wpt_uint16* pSize
24879)
24880{
24881 wpt_uint8* pSendBuffer = NULL;
24882 wpt_uint16 usDataOffset = 0;
24883 wpt_uint16 usSendSize = 0;
24884 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24885 wpt_uint8 i;
24886 /*-----------------------------------------------------------------------
24887 Get message buffer
24888 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024890 sizeof(tRoamCandidateListParams),
24891 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024892 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024893 {
24894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024895 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024896 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024897 WDI_ASSERT(0);
24898 return WDI_STATUS_E_FAILURE;
24899 }
24900 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024901 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024902 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024903 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024904 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024905 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024906 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024907 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024908 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024909 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024910 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024911
24912 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024913 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024914 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024915 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024916 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24917 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024918 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24919 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24920 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24921 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24922 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu2ce47b32014-01-09 21:55:37 -080024923 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024924 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil9c78f572013-11-05 14:17:35 -080024925 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024926 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24927 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24928 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24929 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24930 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24931 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24932 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24933 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024934 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024935 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24936 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24937 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024938
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24940 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24941 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24942 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24943 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24944 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain5f7589c2013-11-17 22:05:35 -080024945 "HomeAwayTime=%d",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024946 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24947 pRoamCandidateListParams->RoamScanOffloadEnabled,
24948 pRoamCandidateListParams->Command,
24949 pRoamCandidateListParams->StartScanReason,
24950 pRoamCandidateListParams->NeighborScanTimerPeriod,
24951 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24952 pRoamCandidateListParams->NeighborScanChannelMinTime,
24953 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24954 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24955 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24956 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24957 pRoamCandidateListParams->ConnectedNetwork.authentication,
24958 pRoamCandidateListParams->ConnectedNetwork.encryption,
24959 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24960 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24961 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024962 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024963 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024964 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024965 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024966 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24967 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024968 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024969 pRoamCandidateListParams->us24GProbeSize);
24970 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024971 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024972 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024973 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024974 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24975 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024976 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024977 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024978 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24979 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24980 pRoamCandidateListParams->nProbes =
24981 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24982 pRoamCandidateListParams->HomeAwayTime =
24983 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024985 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24986 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024988 }
24989
24990
24991 /*Set the output values*/
24992 *ppSendBuffer = pSendBuffer;
24993 *pSize = usSendSize;
24994 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024995}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024996
24997/**
24998 @brief Process Start Roam Candidate Lookup Request function
24999
25000 @param pWDICtx: pointer to the WLAN DAL context
25001 pEventData: pointer to the event information structure
25002
25003 @return Result of the function call
25004*/
25005WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025006WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025007(
25008 WDI_ControlBlockType* pWDICtx,
25009 WDI_EventInfoType* pEventData
25010)
25011{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025012 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025013 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25014 wpt_uint8* pSendBuffer = NULL;
25015 wpt_uint16 usSendSize = 0;
25016 WDI_Status wdiStatus;
25017 /*-------------------------------------------------------------------------
25018 Sanity check
25019 -------------------------------------------------------------------------*/
25020 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025021 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025022 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25023 {
25024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25025 "%s: Invalid parameters", __func__);
25026 WDI_ASSERT(0);
25027 return WDI_STATUS_E_FAILURE;
25028 }
25029
25030 /*-------------------------------------------------------------------------
25031 Pack the Start Roam Candidate Lookup request structure based on version
25032 -------------------------------------------------------------------------*/
25033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25034 "%s: Packing Roam Candidate Lookup request ", __func__);
25035
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025036 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025037 &pSendBuffer, &usSendSize);
25038
25039 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25040 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25041 {
25042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25043 "%s: failed to pack request parameters", __func__);
25044 WDI_ASSERT(0);
25045 return wdiStatus;
25046 }
25047
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025048 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25049 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025050
25051 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025052 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025053 -------------------------------------------------------------------------*/
25054 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025055 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025056}
25057
25058/**
25059 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25060 response is being received over the bus from HAL)
25061
25062 @param pWDICtx: pointer to the WLAN DAL context
25063 pEventData: pointer to the event information structure
25064
25065 @see
25066 @return Result of the function call
25067*/
25068WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025069WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025070(
25071 WDI_ControlBlockType* pWDICtx,
25072 WDI_EventInfoType* pEventData
25073)
25074{
25075 WDI_Status wdiStatus;
25076 eHalStatus halStatus;
25077 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25078
25079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25080
25081 /*-------------------------------------------------------------------------
25082 Sanity check
25083 -------------------------------------------------------------------------*/
25084 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25085 ( NULL == pEventData->pEventData ))
25086 {
25087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25088 "%s: Invalid parameters", __func__);
25089 WDI_ASSERT(0);
25090 return WDI_STATUS_E_FAILURE;
25091 }
25092
25093 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25094
25095 /*-------------------------------------------------------------------------
25096 Extract response and send it to UMAC
25097 -------------------------------------------------------------------------*/
25098 halStatus = *((eHalStatus*)pEventData->pEventData);
25099 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25100
25101 /*Notify UMAC*/
25102 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25103
25104 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025105}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025106#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025107
25108/**
25109 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025110
25111 @param pWDICtx: pointer to the WLAN DAL context
25112 pEventData: pointer to the event information structure
25113
Jeff Johnson295189b2012-06-20 16:38:30 -070025114 @see
25115 @return Result of the function call
25116*/
25117WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025118WDI_PackUpdateScanParamsReq
25119(
25120 WDI_ControlBlockType* pWDICtx,
25121 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25122 wpt_uint8** ppSendBuffer,
25123 wpt_uint16* pSize
25124)
25125{
25126 wpt_uint8* pSendBuffer = NULL;
25127 wpt_uint16 usDataOffset = 0;
25128 wpt_uint16 usSendSize = 0;
25129 tUpdateScanParams updateScanParams = {0};
25130
25131
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080025132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025133 "Begin WDI Update Scan Parameters Old Style Params");
25134 /*-----------------------------------------------------------------------
25135 Get message buffer
25136 -----------------------------------------------------------------------*/
25137 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25138 sizeof(updateScanParams),
25139 &pSendBuffer, &usDataOffset, &usSendSize))||
25140 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25141 {
25142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025143 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025144 pwdiUpdateScanParams);
25145 WDI_ASSERT(0);
25146 return WDI_STATUS_E_FAILURE;
25147 }
25148
25149 //
25150 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25151 //
25152
25153 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25154 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25155
25156 updateScanParams.ucChannelCount =
25157 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25158 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25159 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25160 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25161
25162 wpalMemoryCopy( updateScanParams.aChannels,
25163 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25164 updateScanParams.ucChannelCount);
25165
25166
25167 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25168 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25169 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25170 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25171 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25172
25173 wpalMemoryCopy( pSendBuffer+usDataOffset,
25174 &updateScanParams,
25175 sizeof(updateScanParams));
25176
25177 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25178 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25179
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080025180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025181 "End Update Scan Parameters Old Style");
25182
25183 /*Set the output values*/
25184 *ppSendBuffer = pSendBuffer;
25185 *pSize = usSendSize;
25186
25187 return WDI_STATUS_SUCCESS;
25188}
25189
25190/**
25191 @brief Process Update Scan Params function
25192
25193 @param pWDICtx: pointer to the WLAN DAL context
25194 pEventData: pointer to the event information structure
25195
25196 @see
25197 @return Result of the function call
25198*/
25199WDI_Status
25200WDI_PackUpdateScanParamsReqEx
25201(
25202 WDI_ControlBlockType* pWDICtx,
25203 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25204 wpt_uint8** ppSendBuffer,
25205 wpt_uint16* pSize
25206)
25207{
25208 wpt_uint8* pSendBuffer = NULL;
25209 wpt_uint16 usDataOffset = 0;
25210 wpt_uint16 usSendSize = 0;
25211 tUpdateScanParamsEx updateScanParams = {0};
25212
25213
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025214 /*-----------------------------------------------------------------------
25215 Get message buffer
25216 -----------------------------------------------------------------------*/
25217 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25218 sizeof(updateScanParams),
25219 &pSendBuffer, &usDataOffset, &usSendSize))||
25220 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25221 {
25222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025223 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025224 pwdiUpdateScanParams);
25225 WDI_ASSERT(0);
25226 return WDI_STATUS_E_FAILURE;
25227 }
25228
25229 //
25230 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25231 //
25232
25233 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25234 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25235
25236 updateScanParams.ucChannelCount =
25237 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25238 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25239 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25240 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25241
25242 wpalMemoryCopy( updateScanParams.aChannels,
25243 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25244 updateScanParams.ucChannelCount);
25245
25246
25247 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25248 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25249 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25250 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25251 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25252
25253 wpalMemoryCopy( pSendBuffer+usDataOffset,
25254 &updateScanParams,
25255 sizeof(updateScanParams));
25256
25257 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25258 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25259
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025260 /*Set the output values*/
25261 *ppSendBuffer = pSendBuffer;
25262 *pSize = usSendSize;
25263
25264 return WDI_STATUS_SUCCESS;
25265}
25266
25267/**
25268 @brief Process Update Scan Params function
25269
25270 @param pWDICtx: pointer to the WLAN DAL context
25271 pEventData: pointer to the event information structure
25272
25273 @see
25274 @return Result of the function call
25275*/
25276WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025277WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025278(
Jeff Johnson295189b2012-06-20 16:38:30 -070025279 WDI_ControlBlockType* pWDICtx,
25280 WDI_EventInfoType* pEventData
25281)
25282{
25283 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25284 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025285 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025286 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025287 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025288
25289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025291 -------------------------------------------------------------------------*/
25292 if (( NULL == pEventData ) ||
25293 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25294 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25295 {
25296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025300 }
25301
25302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25303 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025304
25305 //
25306 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25307 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025308 if ( pWDICtx->wlanVersion.revision < 1 )
25309 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025310 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025311 &pSendBuffer, &usSendSize);
25312 }
25313 else
25314 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025315 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25316 &pSendBuffer, &usSendSize);
25317 }
25318
25319 if(WDI_STATUS_SUCCESS != wdiStatus)
25320 {
25321 //memory allocation failed
25322 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025323 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025324
Jeff Johnson295189b2012-06-20 16:38:30 -070025325 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025326 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025327 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025328 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025329 wdiUpdateScanParamsCb, pEventData->pUserData,
25330 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025331}
25332
25333/**
25334 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025335
25336 @param pWDICtx: pointer to the WLAN DAL context
25337 pEventData: pointer to the event information structure
25338
Jeff Johnson295189b2012-06-20 16:38:30 -070025339 @see
25340 @return Result of the function call
25341*/
25342WDI_Status
25343WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025344(
Jeff Johnson295189b2012-06-20 16:38:30 -070025345 WDI_ControlBlockType* pWDICtx,
25346 WDI_EventInfoType* pEventData
25347)
25348{
Srikant Kuppa0f679052013-05-07 13:56:02 -070025349 WDI_LowLevelIndType wdiInd;
25350 tpPrefNetwFoundParams pNetwFoundParams;
25351 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025352
25353
25354 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025355 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025356 -------------------------------------------------------------------------*/
25357 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25358 ( NULL == pEventData->pEventData ))
25359 {
25360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025362 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025364 }
25365
25366 /*-------------------------------------------------------------------------
25367 Extract indication and send it to UMAC
25368 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070025369 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25370
25371 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25372 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25373 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25374
25375 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25376 {
25377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25378 "%s: fail to allocate memory", __func__);
25379 return WDI_STATUS_MEM_FAILURE;
25380 }
25381
25382 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25383 (pNetwFoundParams->ssId.length < 32 )?
25384 pNetwFoundParams->ssId.length : 32;
25385 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25386 pNetwFoundParams->ssId.ssId,
25387 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25388 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25389 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25390 pNetwFoundParams->frameLength;
25391 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25392 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25393 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025394
25395 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025396 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025397
Jeff Johnson295189b2012-06-20 16:38:30 -070025398 // DEBUG
25399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang20c9d402013-08-28 17:55:56 -070025400 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025401 wdiInd.wdiIndicationType,
Wilson Yang20c9d402013-08-28 17:55:56 -070025402 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025403 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang20c9d402013-08-28 17:55:56 -070025404 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025405 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25406
ltimariu034f7d62013-01-24 18:54:33 -080025407 if ( pWDICtx->wdiLowLevelIndCB )
25408 {
25409 /*Notify UMAC*/
25410 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25411 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025412
25413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025414}
25415
25416/**
25417 @brief Process PNO Rsp function (called when a
25418 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025419
25420 @param pWDICtx: pointer to the WLAN DAL context
25421 pEventData: pointer to the event information structure
25422
Jeff Johnson295189b2012-06-20 16:38:30 -070025423 @see
25424 @return Result of the function call
25425*/
25426WDI_Status
25427WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025428(
Jeff Johnson295189b2012-06-20 16:38:30 -070025429 WDI_ControlBlockType* pWDICtx,
25430 WDI_EventInfoType* pEventData
25431)
25432{
25433 WDI_Status wdiStatus;
25434 eHalStatus halStatus;
25435 WDI_PNOScanCb wdiPNOScanCb = NULL;
25436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25437
25438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025440 -------------------------------------------------------------------------*/
25441 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25442 ( NULL == pEventData->pEventData ))
25443 {
25444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025448 }
25449
25450
Jeff Johnsone7245742012-09-05 17:12:55 -070025451 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025452
25453 /*-------------------------------------------------------------------------
25454 Extract response and send it to UMAC
25455 -------------------------------------------------------------------------*/
25456 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025457 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025458
25459 /*Notify UMAC*/
25460 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25461
Jeff Johnsone7245742012-09-05 17:12:55 -070025462 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025463}/*WDI_ProcessSetPreferredNetworkRsp*/
25464
25465/**
25466 @brief Process RSSI Filter Rsp function (called when a
25467 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025468
25469 @param pWDICtx: pointer to the WLAN DAL context
25470 pEventData: pointer to the event information structure
25471
Jeff Johnson295189b2012-06-20 16:38:30 -070025472 @see
25473 @return Result of the function call
25474*/
25475WDI_Status
25476WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025477(
Jeff Johnson295189b2012-06-20 16:38:30 -070025478 WDI_ControlBlockType* pWDICtx,
25479 WDI_EventInfoType* pEventData
25480)
25481{
25482 WDI_Status wdiStatus;
25483 eHalStatus halStatus;
25484 WDI_RssiFilterCb wdiRssiFilterCb;
25485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25486
25487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025489 -------------------------------------------------------------------------*/
25490 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25491 ( NULL == pEventData->pEventData ))
25492 {
25493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025494 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025495 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025497 }
25498
Jeff Johnsone7245742012-09-05 17:12:55 -070025499 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025500
25501 /*-------------------------------------------------------------------------
25502 Extract response and send it to UMAC
25503 -------------------------------------------------------------------------*/
25504 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025505 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025506
25507 /*Notify UMAC*/
25508 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25509
Jeff Johnsone7245742012-09-05 17:12:55 -070025510 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025511}/*WDI_ProcessSetRssiFilterRsp*/
25512
25513/**
25514 @brief Process Update Scan Params Rsp function (called when a
25515 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025516
25517 @param pWDICtx: pointer to the WLAN DAL context
25518 pEventData: pointer to the event information structure
25519
Jeff Johnson295189b2012-06-20 16:38:30 -070025520 @see
25521 @return Result of the function call
25522*/
25523WDI_Status
25524WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025525(
Jeff Johnson295189b2012-06-20 16:38:30 -070025526 WDI_ControlBlockType* pWDICtx,
25527 WDI_EventInfoType* pEventData
25528)
25529{
25530 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025531 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025532 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025533 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25535
25536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025538 -------------------------------------------------------------------------*/
25539 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25540 ( NULL == pEventData->pEventData ))
25541 {
25542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025546 }
25547
25548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025549 "%s: Process UPD scan params ptr : %p",
25550 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025551
Jeff Johnsone7245742012-09-05 17:12:55 -070025552 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025553
25554 /*-------------------------------------------------------------------------
25555 Extract response and send it to UMAC
25556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025557 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25558 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025559 sizeof(halUpdScanParams.status));
25560
25561 uStatus = halUpdScanParams.status;
25562
25563 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025564 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025565
25566 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025567 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025568
Jeff Johnsone7245742012-09-05 17:12:55 -070025569 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025570
25571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025572 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025573 halUpdScanParams.status);
25574
25575 /*Notify UMAC*/
25576 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25577
Jeff Johnsone7245742012-09-05 17:12:55 -070025578 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025579}
25580#endif // FEATURE_WLAN_SCAN_PNO
25581
25582#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025583WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025584WDI_8023MulticastListReq
25585(
25586 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25587 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25588 void* pUserData
25589)
25590{
25591 WDI_EventInfoType wdiEventData;
25592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25593
25594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025595 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025596
25597 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025598 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025599 ------------------------------------------------------------------------*/
25600 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25601 {
25602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25603 "WDI API call before module is initialized - Fail request");
25604
Jeff Johnsone7245742012-09-05 17:12:55 -070025605 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025606 }
25607
25608 /*------------------------------------------------------------------------
25609 Fill in Event data and post to the Main FSM
25610 ------------------------------------------------------------------------*/
25611 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025612 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025613 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025614 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025615 wdiEventData.pUserData = pUserData;
25616
25617 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25618}
25619
Jeff Johnsone7245742012-09-05 17:12:55 -070025620WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025621WDI_ReceiveFilterSetFilterReq
25622(
25623 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25624 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25625 void* pUserData
25626)
25627{
25628 WDI_EventInfoType wdiEventData;
25629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25630
25631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025632 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025633
25634 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025635 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025636 ------------------------------------------------------------------------*/
25637 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25638 {
25639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25640 "WDI API call before module is initialized - Fail request");
25641
Jeff Johnsone7245742012-09-05 17:12:55 -070025642 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025643 }
25644
25645 /*------------------------------------------------------------------------
25646 Fill in Event data and post to the Main FSM
25647 ------------------------------------------------------------------------*/
25648 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025649 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25650 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025651 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25652 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025653 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025654 wdiEventData.pUserData = pUserData;
25655
25656
25657 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25658}
25659
Jeff Johnsone7245742012-09-05 17:12:55 -070025660WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025661WDI_FilterMatchCountReq
25662(
25663 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25664 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25665 void* pUserData
25666)
25667{
25668 WDI_EventInfoType wdiEventData;
25669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25670
25671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025672 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025673
25674 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025675 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025676 ------------------------------------------------------------------------*/
25677 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25678 {
25679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25680 "WDI API call before module is initialized - Fail request");
25681
Jeff Johnsone7245742012-09-05 17:12:55 -070025682 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025683 }
25684
25685 /*------------------------------------------------------------------------
25686 Fill in Event data and post to the Main FSM
25687 ------------------------------------------------------------------------*/
25688 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025689 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025690 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025691 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025692 wdiEventData.pUserData = pUserData;
25693
25694
25695 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25696}
25697
Jeff Johnsone7245742012-09-05 17:12:55 -070025698WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025699WDI_ReceiveFilterClearFilterReq
25700(
25701 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25702 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25703 void* pUserData
25704)
25705{
25706 WDI_EventInfoType wdiEventData;
25707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25708
25709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025710 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025711
25712 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025713 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025714 ------------------------------------------------------------------------*/
25715 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25716 {
25717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25718 "WDI API call before module is initialized - Fail request");
25719
Jeff Johnsone7245742012-09-05 17:12:55 -070025720 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025721 }
25722
25723 /*------------------------------------------------------------------------
25724 Fill in Event data and post to the Main FSM
25725 ------------------------------------------------------------------------*/
25726 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025727 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025728 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025729 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025730 wdiEventData.pUserData = pUserData;
25731
25732
25733 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25734}
25735
25736/**
25737 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025738
25739 @param pWDICtx: pointer to the WLAN DAL context
25740 pEventData: pointer to the event information structure
25741
Jeff Johnson295189b2012-06-20 16:38:30 -070025742 @see
25743 @return Result of the function call
25744*/
25745WDI_Status
25746WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025747(
Jeff Johnson295189b2012-06-20 16:38:30 -070025748 WDI_ControlBlockType* pWDICtx,
25749 WDI_EventInfoType* pEventData
25750)
25751{
25752 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25753 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025754 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025755 wpt_uint16 usDataOffset = 0;
25756 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025757 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025758 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025759 wpt_uint8 ucCurrentBSSSesIdx = 0;
25760 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025761
25762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025763 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025764
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025765 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25766 if( NULL == pRcvFltMcAddrListType )
25767 {
25768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25769 "Failed to alloc in WDI_Process8023MulticastListReq");
25770 return WDI_STATUS_E_FAILURE;
25771 }
25772
Jeff Johnson295189b2012-06-20 16:38:30 -070025773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025774 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025775 -------------------------------------------------------------------------*/
25776 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025777 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025778 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025779 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025780 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25781 {
25782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025783 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025784 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025786 return WDI_STATUS_E_FAILURE;
25787 }
25788
25789 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25790 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25791 &pBSSSes);
25792 if ( NULL == pBSSSes )
25793 {
25794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025795 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025796 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025798 }
25799
25800 /*-----------------------------------------------------------------------
25801 Get message buffer
25802 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025803 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25804 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025805 sizeof(tHalRcvFltMcAddrListType),
25806 &pSendBuffer, &usDataOffset, &usSendSize))||
25807 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25808 {
25809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25810 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025811 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025812 pEventData, pwdiFltPktSetMcListReqParamsType,
25813 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025814 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025817 }
25818
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025819 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025820 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025821 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025822 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025823 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025824 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25825 sizeof(tSirMacAddr));
25826 }
25827
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025828 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025829 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025830 pRcvFltMcAddrListType,
25831 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025832
25833 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025834 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025835
25836
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025837 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025839 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025840 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025841 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025842 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025843 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025844}
25845
25846/**
25847 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025848
25849 @param pWDICtx: pointer to the WLAN DAL context
25850 pEventData: pointer to the event information structure
25851
Jeff Johnson295189b2012-06-20 16:38:30 -070025852 @see
25853 @return Result of the function call
25854*/
25855WDI_Status
25856WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025857(
Jeff Johnson295189b2012-06-20 16:38:30 -070025858 WDI_ControlBlockType* pWDICtx,
25859 WDI_EventInfoType* pEventData
25860)
25861{
25862 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25863 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025864 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025865 wpt_uint16 usDataOffset = 0;
25866 wpt_uint16 usSendSize = 0;
25867 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025868 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025869 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025870 wpt_uint8 ucCurrentBSSSesIdx = 0;
25871 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025872 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25873 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025874
25875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025876 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025877
25878 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025879 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025880 -------------------------------------------------------------------------*/
25881 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025882 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025883 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025884 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025885 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25886 {
25887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025888 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025890 return WDI_STATUS_E_FAILURE;
25891 }
25892
25893 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25894 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25895 &pBSSSes);
25896 if ( NULL == pBSSSes )
25897 {
25898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025899 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025901 }
25902
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025903 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25904 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025905
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025906 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25907 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25908 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25909
25910 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25911 usSessRcvPktFilterCfgSize);
25912
25913 if(NULL == pSessRcvPktFilterCfg)
25914 {
25915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25916 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025917 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025918 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025919 WDI_ASSERT(0);
25920 return WDI_STATUS_E_FAILURE;
25921 }
25922
25923 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25924
25925 /*-----------------------------------------------------------------------
25926 Get message buffer
25927 -----------------------------------------------------------------------*/
25928
25929 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25930 usSessRcvPktFilterCfgSize,
25931 &pSendBuffer, &usDataOffset, &usSendSize))||
25932 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25933 {
25934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25935 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025936 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025937 pEventData, pwdiSetRcvPktFilterReqInfo,
25938 wdiReceiveFilterSetFilterCb);
25939 WDI_ASSERT(0);
25940 wpalMemoryFree(pSessRcvPktFilterCfg);
25941 return WDI_STATUS_E_FAILURE;
25942 }
25943
25944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025945 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025946 usSendSize,pSessRcvPktFilterCfg);
25947
25948 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25949 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25950 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25951 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25952
25953 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25954
25955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25956 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25957 pSessRcvPktFilterCfg->filterType);
25958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25959 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25960 pSessRcvPktFilterCfg->coleasceTime);
25961
25962 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25963 {
25964 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25965 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25966 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25967 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25968 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25969 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25970 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25971 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25972
25973 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25974 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25975 8);
25976 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25977 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25978 8);
25979
25980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025981 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025982 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25983 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25984
25985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025986 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025987 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25988 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25989
25990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025991 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025992 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25993 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25994 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25995 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25996 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25997 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25998
25999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026000 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026001 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26002 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26003 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26004 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26005 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26006 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26007 }
26008
26009 wpalMemoryCopy( pSendBuffer+usDataOffset,
26010 pSessRcvPktFilterCfg,
26011 usSessRcvPktFilterCfgSize);
26012
26013
26014 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26015 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26016
26017 wpalMemoryFree(pSessRcvPktFilterCfg);
26018
26019 }
26020 /*If SLM_SESSIONIZATION is not supported then do this */
26021 else
26022 {
26023 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26024 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26025 * sizeof(tHalRcvPktFilterParams));
26026
26027 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026028 usRcvPktFilterCfgSize);
26029
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026030 if(NULL == pRcvPktFilterCfg)
26031 {
26032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26033 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026034 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026035 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026036 WDI_ASSERT(0);
26037 return WDI_STATUS_E_FAILURE;
26038 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026039
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026040 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026041
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026042 /*-----------------------------------------------------------------------
26043 Get message buffer
26044 -----------------------------------------------------------------------*/
26045 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026046 usRcvPktFilterCfgSize,
26047 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026048 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26049 {
26050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026051 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026052 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026053 pEventData, pwdiSetRcvPktFilterReqInfo,
26054 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026055 WDI_ASSERT(0);
26056 wpalMemoryFree(pRcvPktFilterCfg);
26057 return WDI_STATUS_E_FAILURE;
26058 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026059
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026061 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026062 usSendSize,usRcvPktFilterCfgSize);
26063
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026064 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26065 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26066 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26067 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026068
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026070 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026071 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026073 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026074 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026075
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026076 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26077 {
26078 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26079 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26080 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26081 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26082 pRcvPktFilterCfg->paramsData[i].dataOffset =
26083 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26084 pRcvPktFilterCfg->paramsData[i].dataLength =
26085 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026086
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026087 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026088 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26089 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026090 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026091 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26092 8);
26093
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026095 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026096 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026097 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26098
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026100 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026101 pRcvPktFilterCfg->paramsData[i].dataOffset,
26102 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026103
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026105 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026106 pRcvPktFilterCfg->paramsData[i].compareData[0],
26107 pRcvPktFilterCfg->paramsData[i].compareData[1],
26108 pRcvPktFilterCfg->paramsData[i].compareData[2],
26109 pRcvPktFilterCfg->paramsData[i].compareData[3],
26110 pRcvPktFilterCfg->paramsData[i].compareData[4],
26111 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026112
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026114 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026115 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26116 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26117 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26118 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26119 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26120 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26121 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026122
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026123 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026124 pRcvPktFilterCfg,
26125 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026126
26127
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026128 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26129 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026130
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026132 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026133 wpalMemoryFree(pRcvPktFilterCfg);
26134 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026136 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026137 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026138 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026139 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026140 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026141}
26142
26143/**
26144 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026145
26146 @param pWDICtx: pointer to the WLAN DAL context
26147 pEventData: pointer to the event information structure
26148
Jeff Johnson295189b2012-06-20 16:38:30 -070026149 @see
26150 @return Result of the function call
26151*/
26152WDI_Status
26153WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026154(
Jeff Johnson295189b2012-06-20 16:38:30 -070026155 WDI_ControlBlockType* pWDICtx,
26156 WDI_EventInfoType* pEventData
26157)
26158{
26159 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26160 NULL;
26161 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26162 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026164 wpt_uint16 usDataOffset = 0;
26165 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026166 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26167 wpt_uint8 ucCurrentBSSSesIdx = 0;
26168 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026169
26170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026171 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026172
26173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026175 -------------------------------------------------------------------------*/
26176 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026177 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026178 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026179 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026180 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26181 {
26182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026183 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026184 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026186 }
26187
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026188 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26189 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26190 &pBSSSes);
26191 if ( NULL == pBSSSes )
26192 {
26193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026194 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026195 return WDI_STATUS_E_FAILURE;
26196 }
26197
Jeff Johnson295189b2012-06-20 16:38:30 -070026198 /*-----------------------------------------------------------------------
26199 Get message buffer
26200 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026201 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26202 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026203 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026204 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026205 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026206 {
26207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26208 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026209 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026210 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26211 wdiFilterMatchCountCb);
26212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026214 }
26215
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026216 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26217 wpalMemoryCopy( pSendBuffer+usDataOffset,
26218 &rcvFltPktMatchCntReqParam,
26219 sizeof(rcvFltPktMatchCntReqParam));
26220
Jeff Johnson295189b2012-06-20 16:38:30 -070026221 //
26222 // Don't need to fill send buffer other than header
26223 //
26224 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026225 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026226
26227
26228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026229 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026230 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026231 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26232 wdiFilterMatchCountCb,
26233 pEventData->pUserData,
26234 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026235}
26236
26237/**
26238 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026239
26240 @param pWDICtx: pointer to the WLAN DAL context
26241 pEventData: pointer to the event information structure
26242
Jeff Johnson295189b2012-06-20 16:38:30 -070026243 @see
26244 @return Result of the function call
26245*/
26246WDI_Status
26247WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026248(
Jeff Johnson295189b2012-06-20 16:38:30 -070026249 WDI_ControlBlockType* pWDICtx,
26250 WDI_EventInfoType* pEventData
26251)
Jeff Johnsone7245742012-09-05 17:12:55 -070026252{
Jeff Johnson295189b2012-06-20 16:38:30 -070026253 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26254 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026255 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026256 wpt_uint16 usDataOffset = 0;
26257 wpt_uint16 usSendSize = 0;
26258 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026259 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026260 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026261
26262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026263 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026264
26265 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026266 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026267 -------------------------------------------------------------------------*/
26268 if (( NULL == pEventData ) ||
26269 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26270 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026271 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026272 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26273 {
26274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026277 return WDI_STATUS_E_FAILURE;
26278 }
26279
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026280 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026281 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26282 &pBSSSes);
26283 if ( NULL == pBSSSes )
26284 {
26285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026286 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026288 }
26289
26290 /*-----------------------------------------------------------------------
26291 Get message buffer
26292 -----------------------------------------------------------------------*/
26293 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026294 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026295 sizeof(tHalRcvFltPktClearParam),
26296 &pSendBuffer, &usDataOffset, &usSendSize))||
26297 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26298 {
26299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26300 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026301 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026302 pEventData, pwdiRcvFltPktClearReqParamsType,
26303 wdiRcvFltPktClearFilterCb);
26304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026306 }
26307
26308
26309 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026310 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026311 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026312 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026313
Jeff Johnsone7245742012-09-05 17:12:55 -070026314 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26315 wpalMemoryCopy( pSendBuffer+usDataOffset,
26316 &rcvFltPktClearParam,
26317 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026318
26319 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026320 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026321
26322
26323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026324 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026325 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026326 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026327 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026328 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026329}
26330
26331/**
26332 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026333
26334 @param pWDICtx: pointer to the WLAN DAL context
26335 pEventData: pointer to the event information structure
26336
Jeff Johnson295189b2012-06-20 16:38:30 -070026337 @see
26338 @return Result of the function call
26339*/
26340WDI_Status
26341WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026342(
Jeff Johnson295189b2012-06-20 16:38:30 -070026343 WDI_ControlBlockType* pWDICtx,
26344 WDI_EventInfoType* pEventData
26345)
26346{
Jeff Johnson295189b2012-06-20 16:38:30 -070026347 eHalStatus halStatus;
26348 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026349 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26350 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26352
26353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026354 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026355
26356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026357 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026358 -------------------------------------------------------------------------*/
26359 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26360 ( NULL == pEventData->pEventData ))
26361 {
26362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026366 }
26367
Jeff Johnsone7245742012-09-05 17:12:55 -070026368 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026369
26370 /*-------------------------------------------------------------------------
26371 Extract response and send it to UMAC
26372 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026373 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26374 {
26375 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26376 pEventData->pEventData,
26377 sizeof(halRcvFltPktSetMcListRsp));
26378
26379 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26380 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26381 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26382 halRcvFltPktSetMcListRsp.bssIdx;
26383 }
26384 else
26385 {
26386 halStatus = *((eHalStatus*)pEventData->pEventData);
26387 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26388 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026389
26390 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026391 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026392
Jeff Johnsone7245742012-09-05 17:12:55 -070026393 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026394}
26395
26396/**
26397 @brief Process Set Rsp function (called when a
26398 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026399
26400 @param pWDICtx: pointer to the WLAN DAL context
26401 pEventData: pointer to the event information structure
26402
Jeff Johnson295189b2012-06-20 16:38:30 -070026403 @see
26404 @return Result of the function call
26405*/
26406WDI_Status
26407WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026408(
Jeff Johnson295189b2012-06-20 16:38:30 -070026409 WDI_ControlBlockType* pWDICtx,
26410 WDI_EventInfoType* pEventData
26411)
26412{
Jeff Johnson295189b2012-06-20 16:38:30 -070026413 eHalStatus halStatus;
26414 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026415 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26416 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26418
26419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026420 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026421
26422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026424 -------------------------------------------------------------------------*/
26425 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26426 ( NULL == pEventData->pEventData ))
26427 {
26428 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026429 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026432 }
26433
26434 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026435 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026436
26437 /*-------------------------------------------------------------------------
26438 Extract response and send it to UMAC
26439 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026440 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26441 {
26442 wpalMemoryCopy( &halSetPktFilterRspParams,
26443 pEventData->pEventData,
26444 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026445
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026446 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26447 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26448 }
26449 else
26450 {
26451 halStatus = *((eHalStatus*)pEventData->pEventData);
26452 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26453 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026454 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026455 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026456
Jeff Johnsone7245742012-09-05 17:12:55 -070026457 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026458}
26459
26460/**
26461 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026462
26463 @param pWDICtx: pointer to the WLAN DAL context
26464 pEventData: pointer to the event information structure
26465
Jeff Johnson295189b2012-06-20 16:38:30 -070026466 @see
26467 @return Result of the function call
26468*/
26469WDI_Status
26470WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026471(
Jeff Johnson295189b2012-06-20 16:38:30 -070026472 WDI_ControlBlockType* pWDICtx,
26473 WDI_EventInfoType* pEventData
26474)
26475{
Jeff Johnson295189b2012-06-20 16:38:30 -070026476 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026477 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026478 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26479 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026480
26481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26482
26483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026484 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026485
26486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026488 -------------------------------------------------------------------------*/
26489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26490 ( NULL == pEventData->pEventData ))
26491 {
26492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026496 }
26497
Jeff Johnsone7245742012-09-05 17:12:55 -070026498 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026499
26500 /*-------------------------------------------------------------------------
26501 Extract response and send it to UMAC
26502 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026503 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26504 {
26505 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26506 pEventData->pEventData,
26507 sizeof(halRcvFltrPktMatachRsp));
26508
26509 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26510 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26511 }
26512 else
26513 {
26514 halStatus = *((eHalStatus*)pEventData->pEventData);
26515 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26516 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026517
26518 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026519 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026520
Jeff Johnsone7245742012-09-05 17:12:55 -070026521 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026522}
26523
26524/**
26525 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026526
26527 @param pWDICtx: pointer to the WLAN DAL context
26528 pEventData: pointer to the event information structure
26529
Jeff Johnson295189b2012-06-20 16:38:30 -070026530 @see
26531 @return Result of the function call
26532*/
26533WDI_Status
26534WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026535(
Jeff Johnson295189b2012-06-20 16:38:30 -070026536 WDI_ControlBlockType* pWDICtx,
26537 WDI_EventInfoType* pEventData
26538)
26539{
Jeff Johnson295189b2012-06-20 16:38:30 -070026540 eHalStatus halStatus;
26541 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026542 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26543 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26545
26546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026547 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026548
26549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026551 -------------------------------------------------------------------------*/
26552 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26553 ( NULL == pEventData->pEventData ))
26554 {
26555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026559 }
26560
26561 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026562 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026563
26564 /*-------------------------------------------------------------------------
26565 Extract response and send it to UMAC
26566 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026567 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26568 {
26569 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26570 pEventData->pEventData,
26571 sizeof(halRcvFltPktClearRspMsg));
26572
26573 wdiRcvFltPktClearRspParamsType.wdiStatus =
26574 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26575 wdiRcvFltPktClearRspParamsType.bssIdx =
26576 halRcvFltPktClearRspMsg.bssIdx;
26577 }
26578 else
26579 {
26580 halStatus = *((eHalStatus*)pEventData->pEventData);
26581 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26582 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026583
26584 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026585 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026586
Jeff Johnsone7245742012-09-05 17:12:55 -070026587 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026588}
26589#endif // WLAN_FEATURE_PACKET_FILTERING
26590
26591/**
26592 @brief Process Shutdown Rsp function
26593 There is no shutdown response comming from HAL
26594 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026595
Jeff Johnson295189b2012-06-20 16:38:30 -070026596 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026597 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026598
26599 @see
26600 @return Result of the function call
26601*/
26602WDI_Status
26603WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026604(
Jeff Johnson295189b2012-06-20 16:38:30 -070026605 WDI_ControlBlockType* pWDICtx,
26606 WDI_EventInfoType* pEventData
26607)
26608{
26609 /*There is no shutdown response comming from HAL - function just kept for
26610 simmetry */
26611 WDI_ASSERT(0);
26612 return WDI_STATUS_SUCCESS;
26613}/*WDI_ProcessShutdownRsp*/
26614
26615/**
26616 @brief WDI_SetPowerParamsReq
26617
Jeff Johnsone7245742012-09-05 17:12:55 -070026618 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026619 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026620
Jeff Johnson295189b2012-06-20 16:38:30 -070026621 wdiPowerParamsCb: callback for passing back the response
26622 of the Set Power Params operation received from the
26623 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026624
Jeff Johnson295189b2012-06-20 16:38:30 -070026625 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026626 callback
26627
Jeff Johnson295189b2012-06-20 16:38:30 -070026628 @return Result of the function call
26629*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026630WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026631WDI_SetPowerParamsReq
26632(
26633 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26634 WDI_SetPowerParamsCb wdiPowerParamsCb,
26635 void* pUserData
26636)
26637{
26638 WDI_EventInfoType wdiEventData;
26639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26640
26641 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026642 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026643 ------------------------------------------------------------------------*/
26644 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26645 {
26646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26647 "WDI API call before module is initialized - Fail request");
26648
Jeff Johnsone7245742012-09-05 17:12:55 -070026649 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026650 }
26651
26652 /*------------------------------------------------------------------------
26653 Fill in Event data and post to the Main FSM
26654 ------------------------------------------------------------------------*/
26655 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026656 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026657 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026658 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026659 wdiEventData.pUserData = pUserData;
26660
26661 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26662}/*WDI_SetPowerParamsReq*/
26663
26664/**
26665 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026666
26667 @param pWDICtx: pointer to the WLAN DAL context
26668 pEventData: pointer to the event information structure
26669
Jeff Johnson295189b2012-06-20 16:38:30 -070026670 @see
26671 @return Result of the function call
26672*/
26673WDI_Status
26674WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026675(
Jeff Johnson295189b2012-06-20 16:38:30 -070026676 WDI_ControlBlockType* pWDICtx,
26677 WDI_EventInfoType* pEventData
26678)
26679{
26680 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26681 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026682 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026683 wpt_uint16 usDataOffset = 0;
26684 wpt_uint16 usSendSize = 0;
26685 tSetPowerParamsType powerParams;
26686
26687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026688 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026689 -------------------------------------------------------------------------*/
26690 if (( NULL == pEventData ) ||
26691 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26692 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26693 {
26694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026695 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026696 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026698 }
26699
26700 /*-----------------------------------------------------------------------
26701 Get message buffer
26702 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026703 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026704 sizeof(powerParams),
26705 &pSendBuffer, &usDataOffset, &usSendSize))||
26706 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26707 {
26708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026709 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026710 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026713 }
26714
26715 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026716 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026717 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26718
26719 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026720 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026721 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26722
26723 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026724 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026725 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26726
26727 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026728 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026729 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26730
26731 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026732 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026733 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26734
26735 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026736 powerParams.uBETInterval =
26737 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026738
Yue Ma0da19492013-05-13 17:01:29 -070026739 /* MAX LI for modulated DTIM */
26740 powerParams.uMaxLIModulatedDTIM =
26741 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026742
26743 wpalMemoryCopy( pSendBuffer+usDataOffset,
26744 &powerParams,
26745 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026746
26747 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026748 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026749
26750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026751 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26754 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026755}
26756
26757/**
26758 @brief Process Power Params Rsp function (called when a
26759 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026760
26761 @param pWDICtx: pointer to the WLAN DAL context
26762 pEventData: pointer to the event information structure
26763
Jeff Johnson295189b2012-06-20 16:38:30 -070026764 @see
26765 @return Result of the function call
26766*/
26767WDI_Status
26768WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026769(
Jeff Johnson295189b2012-06-20 16:38:30 -070026770 WDI_ControlBlockType* pWDICtx,
26771 WDI_EventInfoType* pEventData
26772)
26773{
26774 WDI_Status wdiStatus;
26775 eHalStatus halStatus;
26776 WDI_SetPowerParamsCb wdiPowerParamsCb;
26777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26778
26779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026780 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026781 -------------------------------------------------------------------------*/
26782 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26783 ( NULL == pEventData->pEventData ))
26784 {
26785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026787 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026789 }
26790
Jeff Johnsone7245742012-09-05 17:12:55 -070026791 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026792
26793 /*-------------------------------------------------------------------------
26794 Extract response and send it to UMAC
26795 -------------------------------------------------------------------------*/
26796 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026797 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026798
26799 /*Notify UMAC*/
26800 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26801
Jeff Johnsone7245742012-09-05 17:12:55 -070026802 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026803}/*WDI_ProcessSetPowerParamsRsp*/
26804
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026805/**
26806 @brief WDI_dhcpStartInd
26807 Host will send an event to the FW when DHCP is initiated
26808
26809 @param
26810 WDI_DHCPInd: DHCP Indication
26811 @see
26812 @return Result of the function call
26813*/
26814WDI_Status
26815WDI_dhcpStartInd
26816(
26817 WDI_DHCPInd *wdiDHCPInd
26818)
26819{
26820 WDI_EventInfoType wdiEventData;
26821
26822 /*------------------------------------------------------------------------
26823 Sanity Check
26824 ------------------------------------------------------------------------*/
26825 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26826 {
26827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26828 "WDI API call before module is initialized - Fail request");
26829
26830 return WDI_STATUS_E_NOT_ALLOWED;
26831 }
26832
26833 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26834 wdiEventData.pEventData = wdiDHCPInd;
26835 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26836 wdiEventData.pCBfnc = NULL;
26837 wdiEventData.pUserData = NULL;
26838
26839 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26840}
26841
26842
26843/**
26844 @brief WDI_dhcpStopInd
26845 Host will send an event to the FW when DHCP is completed
26846
26847 @param
26848 WDI_DHCPInd: DHCP Indication
26849 @see
26850 @return Result of the function call
26851*/
26852WDI_Status
26853WDI_dhcpStopInd
26854(
26855 WDI_DHCPInd *wdiDHCPInd
26856)
26857{
26858 WDI_EventInfoType wdiEventData;
26859
26860 /*------------------------------------------------------------------------
26861 Sanity Check
26862 ------------------------------------------------------------------------*/
26863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26864 {
26865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26866 "WDI API call before module is initialized - Fail request");
26867
26868 return WDI_STATUS_E_NOT_ALLOWED;
26869 }
26870
26871 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26872 wdiEventData.pEventData = wdiDHCPInd;
26873 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26874 wdiEventData.pCBfnc = NULL;
26875 wdiEventData.pUserData = NULL;
26876
26877 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26878}
26879
26880
26881/**
26882 @brief Process DHCP Start Indication message and post it to HAL
26883
26884 @param pWDICtx: pointer to the WLAN DAL context
26885 pEventData: pointer to the event information structure
26886
26887 @see
26888 @return Result of the function call
26889*/
26890WDI_Status
26891WDI_ProcessDHCPStartInd
26892(
26893 WDI_ControlBlockType* pWDICtx,
26894 WDI_EventInfoType* pEventData
26895)
26896{
26897 wpt_uint8* pSendBuffer = NULL;
26898 wpt_uint16 usDataOffset = 0;
26899 wpt_uint16 usSendSize = 0;
26900 wpt_uint16 usLen = 0;
26901 WDI_DHCPInd* pwdiDHCPInd = NULL;
26902 tDHCPInfo* pDHCPInfo;
26903
26904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26905
26906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26907 "%s", __func__);
26908
26909 /*-------------------------------------------------------------------------
26910 Sanity check
26911 -------------------------------------------------------------------------*/
26912 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26913 {
26914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26915 "%s: Invalid parameters", __func__);
26916 WDI_ASSERT(0);
26917 return WDI_STATUS_E_FAILURE;
26918 }
26919 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26920 /*-----------------------------------------------------------------------
26921 Get message buffer
26922 -----------------------------------------------------------------------*/
26923
26924 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26925 WDI_DHCP_START_IND,
26926 sizeof(tDHCPInfo),
26927 &pSendBuffer, &usDataOffset, &usSendSize))||
26928 ( usSendSize < (usDataOffset + usLen )))
26929 {
26930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26931 "Unable to get send buffer in DHCP Start req %p ",
26932 pEventData);
26933 WDI_ASSERT(0);
26934 return WDI_STATUS_E_FAILURE;
26935 }
26936
26937 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26938 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26939 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26940 WDI_MAC_ADDR_LEN);
26941
26942 pWDICtx->pReqStatusUserData = NULL;
26943 pWDICtx->pfncRspCB = NULL;
26944
26945 /*-------------------------------------------------------------------------
26946 Send DHCP Start Indication to HAL
26947 -------------------------------------------------------------------------*/
26948 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26949
26950}/*WDI_ProcessDHCPStartInd*/
26951
26952/**
26953 @brief Process DHCP Stop indication message and post it to HAL
26954
26955 @param pWDICtx: pointer to the WLAN DAL context
26956 pEventData: pointer to the event information structure
26957
26958 @see
26959 @return Result of the function call
26960*/
26961WDI_Status
26962WDI_ProcessDHCPStopInd
26963(
26964 WDI_ControlBlockType* pWDICtx,
26965 WDI_EventInfoType* pEventData
26966)
26967{
26968 wpt_uint8* pSendBuffer = NULL;
26969 wpt_uint16 usDataOffset = 0;
26970 wpt_uint16 usSendSize = 0;
26971 wpt_uint16 usLen = 0;
26972 WDI_DHCPInd* pwdiDHCPInd = NULL;
26973 tDHCPInfo* pDHCPInfo;
26974
26975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26976
26977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26978 "%s", __func__);
26979
26980 /*-------------------------------------------------------------------------
26981 Sanity check
26982 -------------------------------------------------------------------------*/
26983
26984 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26985 {
26986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26987 "%s: Invalid parameters", __func__);
26988 WDI_ASSERT(0);
26989 return WDI_STATUS_E_FAILURE;
26990 }
26991 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26992 /*-----------------------------------------------------------------------
26993 Get message buffer
26994 -----------------------------------------------------------------------*/
26995
26996 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26997 WDI_DHCP_STOP_IND,
26998 sizeof(tDHCPInfo),
26999 &pSendBuffer, &usDataOffset, &usSendSize))||
27000 ( usSendSize < (usDataOffset + usLen )))
27001 {
27002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27003 "Unable to get send buffer in DHCP Start req %p ",
27004 pEventData);
27005 WDI_ASSERT(0);
27006 return WDI_STATUS_E_FAILURE;
27007 }
27008
27009 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
27010 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27011 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27012 WDI_MAC_ADDR_LEN);
27013
27014 pWDICtx->pReqStatusUserData = NULL;
27015 pWDICtx->pfncRspCB = NULL;
27016 /*-------------------------------------------------------------------------
27017 Send DHCP Stop indication to HAL
27018 -------------------------------------------------------------------------*/
27019 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27020
27021}/*WDI_ProcessDHCPStopInd*/
27022
27023
Jeff Johnson295189b2012-06-20 16:38:30 -070027024#ifdef WLAN_FEATURE_GTK_OFFLOAD
27025/**
27026 @brief WDI_GTKOffloadReq will be called when the upper MAC
27027 wants to set GTK Rekey Counter while in power save. Upon
27028 the call of this API the WLAN DAL will pack and send a
27029 HAL GTK offload request message to the lower RIVA
27030 sub-system if DAL is in state STARTED.
27031
27032 In state BUSY this request will be queued. Request won't
27033 be allowed in any other state.
27034
27035 WDI_PostAssocReq must have been called.
27036
27037 @param pwdiGtkOffloadParams: the GTK offload as specified
27038 by the Device Interface
27039
27040 wdiGtkOffloadCb: callback for passing back the response
27041 of the GTK offload operation received from the device
27042
27043 pUserData: user data will be passed back with the
27044 callback
27045
27046 @see WDI_PostAssocReq
27047 @return Result of the function call
27048*/
27049WDI_Status
27050WDI_GTKOffloadReq
27051(
27052 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27053 WDI_GtkOffloadCb wdiGtkOffloadCb,
27054 void* pUserData
27055)
27056{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027057 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27059
27060 /*------------------------------------------------------------------------
27061 Sanity Check
27062 ------------------------------------------------------------------------*/
27063 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27064 {
27065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27066 "WDI API call before module is initialized - Fail request");
27067
27068 return WDI_STATUS_E_NOT_ALLOWED;
27069 }
27070
27071 /*------------------------------------------------------------------------
27072 Fill in Event data and post to the Main FSM
27073 ------------------------------------------------------------------------*/
27074 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27075 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027076 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027077 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27078 wdiEventData.pUserData = pUserData;
27079
27080 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27081}
27082
27083
27084/**
27085 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27086 MAC wants to get GTK Rekey Counter while in power save.
27087 Upon the call of this API the WLAN DAL will pack and
27088 send a HAL GTK offload request message to the lower RIVA
27089 sub-system if DAL is in state STARTED.
27090
27091 In state BUSY this request will be queued. Request won't
27092 be allowed in any other state.
27093
27094 WDI_PostAssocReq must have been called.
27095
27096 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27097 Information Message as specified by the
27098 Device Interface
27099
27100 wdiGtkOffloadGetInfoCb: callback for passing back the
27101 response of the GTK offload operation received from the
27102 device
27103
27104 pUserData: user data will be passed back with the
27105 callback
27106
27107 @see WDI_PostAssocReq
27108 @return Result of the function call
27109*/
27110WDI_Status
27111WDI_GTKOffloadGetInfoReq
27112(
27113 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27114 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27115 void* pUserData
27116)
27117{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027118 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27120
27121 /*------------------------------------------------------------------------
27122 Sanity Check
27123 ------------------------------------------------------------------------*/
27124 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27125 {
27126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27127 "WDI API call before module is initialized - Fail request");
27128
27129 return WDI_STATUS_E_NOT_ALLOWED;
27130 }
27131
27132 /*------------------------------------------------------------------------
27133 Fill in Event data and post to the Main FSM
27134 ------------------------------------------------------------------------*/
27135 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27136 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27137 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27138 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27139 wdiEventData.pUserData = pUserData;
27140
27141 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27142}
27143
27144
27145/**
27146 @brief Process set GTK Offload Request function
27147
27148 @param pWDICtx: pointer to the WLAN DAL context
27149 pEventData: pointer to the event information structure
27150
27151 @see
27152 @return Result of the function call
27153*/
27154WDI_Status
27155WDI_ProcessGTKOffloadReq
27156(
27157 WDI_ControlBlockType* pWDICtx,
27158 WDI_EventInfoType* pEventData
27159)
27160{
27161 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27162 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27163 wpt_uint8* pSendBuffer = NULL;
27164 wpt_uint16 usDataOffset = 0;
27165 wpt_uint16 usSendSize = 0;
27166 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027167 wpt_uint8 ucCurrentSessionId = 0;
27168 WDI_BSSSessionType* pBSSSes = NULL;
27169
Jeff Johnson295189b2012-06-20 16:38:30 -070027170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27171
27172 /*-------------------------------------------------------------------------
27173 Sanity check
27174 -------------------------------------------------------------------------*/
27175 if (( NULL == pEventData ) ||
27176 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27177 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27178 {
27179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027181 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027182 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027183 }
27184
27185 /*-----------------------------------------------------------------------
27186 Get message buffer
27187 -----------------------------------------------------------------------*/
27188 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27189 sizeof(gtkOffloadReqParams),
27190 &pSendBuffer, &usDataOffset, &usSendSize))||
27191 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27192 {
27193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027194 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027195 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27196 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027197 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027198 }
27199
27200 //
27201 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27202 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027203 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27204 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27205 &pBSSSes);
27206 if ( NULL == pBSSSes )
27207 {
27208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027209 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027210 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027211 }
27212
27213 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27214
Jeff Johnson295189b2012-06-20 16:38:30 -070027215 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27216 // Copy KCK
27217 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27218 // Copy KEK
27219 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27220 // Copy KeyReplayCounter
27221 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27222
27223 wpalMemoryCopy( pSendBuffer+usDataOffset,
27224 &gtkOffloadReqParams,
27225 sizeof(gtkOffloadReqParams));
27226
27227 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27228 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27229
27230 /*-------------------------------------------------------------------------
27231 Send Get STA Request to HAL
27232 -------------------------------------------------------------------------*/
27233 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27234 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027235
27236fail:
27237 // Release the message buffer so we don't leak
27238 wpalMemoryFree(pSendBuffer);
27239
27240failRequest:
27241 //WDA should have failure check to avoid the memory leak
27242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027243}
27244
27245
27246/**
27247 @brief Process GTK Offload Get Information Request function
27248
27249 @param pWDICtx: pointer to the WLAN DAL context
27250 pEventData: pointer to the event information structure
27251
27252 @see
27253 @return Result of the function call
27254*/
27255WDI_Status
27256WDI_ProcessGTKOffloadGetInfoReq
27257(
27258 WDI_ControlBlockType* pWDICtx,
27259 WDI_EventInfoType* pEventData
27260)
27261{
27262 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27263 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27264 wpt_uint8* pSendBuffer = NULL;
27265 wpt_uint16 usDataOffset = 0;
27266 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027267 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27268 wpt_uint8 ucCurrentSessionId = 0;
27269 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027270
27271 /*-------------------------------------------------------------------------
27272 Sanity check
27273 -------------------------------------------------------------------------*/
27274 if (( NULL == pEventData ) ||
27275 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27276 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27277 {
27278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027279 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027280 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027281 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027282 }
27283
27284 /*-----------------------------------------------------------------------
27285 Get message buffer
27286 -----------------------------------------------------------------------*/
27287 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027288 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027289 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027290 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027291 {
27292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027293 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027294 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27295 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027296 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027297 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027298 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27299 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27300 &pBSSSes);
27301 if ( NULL == pBSSSes )
27302 {
27303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027304 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027305 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027306 }
27307 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027308
27309 //
27310 // Don't need to fill send buffer other than header
27311 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027312 wpalMemoryCopy( pSendBuffer+usDataOffset,
27313 &halGtkOffloadGetInfoReqParams,
27314 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027315
27316 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27317 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27318
27319 /*-------------------------------------------------------------------------
27320 Send Get STA Request to HAL
27321 -------------------------------------------------------------------------*/
27322 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27323 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027324fail:
27325 // Release the message buffer so we don't leak
27326 wpalMemoryFree(pSendBuffer);
27327
27328failRequest:
27329 //WDA should have failure check to avoid the memory leak
27330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027331}
27332
27333/**
27334 @brief Process host offload Rsp function (called when a
27335 response is being received over the bus from HAL)
27336
27337 @param pWDICtx: pointer to the WLAN DAL context
27338 pEventData: pointer to the event information structure
27339
27340 @see
27341 @return Result of the function call
27342*/
27343WDI_Status
27344WDI_ProcessGtkOffloadRsp
27345(
27346 WDI_ControlBlockType* pWDICtx,
27347 WDI_EventInfoType* pEventData
27348)
27349{
Jeff Johnson295189b2012-06-20 16:38:30 -070027350 eHalStatus halStatus;
27351 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027352 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27353 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027354
27355 /*-------------------------------------------------------------------------
27356 Sanity check
27357 -------------------------------------------------------------------------*/
27358 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27359 ( NULL == pEventData->pEventData))
27360 {
27361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027362 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027363 WDI_ASSERT(0);
27364 return WDI_STATUS_E_FAILURE;
27365 }
27366
Wilson Yangcf2cf012013-10-10 23:13:38 -070027367 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27368
Jeff Johnson295189b2012-06-20 16:38:30 -070027369 /*-------------------------------------------------------------------------
27370 Extract response and send it to UMAC
27371 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027372 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27373 {
27374 wpalMemoryCopy( &halGtkOffloadRspParams,
27375 pEventData->pEventData,
27376 sizeof(halGtkOffloadRspParams));
27377
27378 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027379 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027380 wdiGtkOffloadRsparams.bssIdx =
27381 halGtkOffloadRspParams.bssIdx;
27382 }
27383 else
27384 {
27385 halStatus = *((eHalStatus*)pEventData->pEventData);
27386 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27387 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027388
27389 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027390 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027391
27392 return WDI_STATUS_SUCCESS;
27393}
27394
27395/**
27396 @brief Process GTK Offload Get Information Response function
27397
27398 @param pWDICtx: pointer to the WLAN DAL context
27399 pEventData: pointer to the event information structure
27400
27401 @see
27402 @return Result of the function call
27403*/
27404WDI_Status
27405WDI_ProcessGTKOffloadGetInfoRsp
27406(
27407 WDI_ControlBlockType* pWDICtx,
27408 WDI_EventInfoType* pEventData
27409)
27410{
Jeff Johnson295189b2012-06-20 16:38:30 -070027411 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027412 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027413 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27414 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027415 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027416
Jeff Johnson295189b2012-06-20 16:38:30 -070027417
27418 /*-------------------------------------------------------------------------
27419 Sanity check
27420 -------------------------------------------------------------------------*/
27421 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27422 ( NULL == pEventData->pEventData ))
27423 {
27424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027426 WDI_ASSERT(0);
27427 return WDI_STATUS_E_FAILURE;
27428 }
27429
Wilson Yangcf2cf012013-10-10 23:13:38 -070027430 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27431
27432 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027433 Extract response and send it to UMAC
27434 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027435 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27436 {
27437 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27438 pEventData->pEventData,
27439 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027440
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027441 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027442 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027443 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27444 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27445 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27446 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27447 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27448 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27449 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27450 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027451
27452 wpalMutexAcquire(&pWDICtx->wptMutex);
27453 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27454 &pBSSSes);
27455
27456 if ( NULL == pBSSSes )
27457 {
27458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27459 "Association sequence for this BSS does not exist or "
27460 "association no longer in progress - mysterious HAL response");
27461 wpalMutexRelease(&pWDICtx->wptMutex);
27462 return WDI_STATUS_E_NOT_ALLOWED;
27463 }
27464
27465 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27466 sizeof (wpt_macAddr));
27467 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027468 }
27469 else
27470 {
27471 halStatus = *((eHalStatus*)pEventData->pEventData);
27472 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27473 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027474 /*Notify UMAC*/
27475 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27476 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027477 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027478
27479 return WDI_STATUS_SUCCESS;
27480}
27481#endif // WLAN_FEATURE_GTK_OFFLOAD
27482
27483#ifdef WLAN_WAKEUP_EVENTS
27484WDI_Status
27485WDI_ProcessWakeReasonInd
27486(
27487 WDI_ControlBlockType* pWDICtx,
27488 WDI_EventInfoType* pEventData
27489)
27490{
27491 WDI_LowLevelIndType *pWdiInd;
27492 tpWakeReasonParams pWakeReasonParams;
27493 wpt_uint32 allocSize = 0;
27494
27495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027496 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027497
27498 /*-------------------------------------------------------------------------
27499 Sanity check
27500 -------------------------------------------------------------------------*/
27501 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27502 ( NULL == pEventData->pEventData ))
27503 {
27504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027505 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027506 WDI_ASSERT( 0 );
27507 return WDI_STATUS_E_FAILURE;
27508 }
27509
27510 /*-------------------------------------------------------------------------
27511 Extract indication and send it to UMAC
27512 -------------------------------------------------------------------------*/
27513 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27514
27515 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27516
27517 //Allocate memory for WDI_WakeReasonIndType structure
27518 pWdiInd = wpalMemoryAllocate(allocSize) ;
27519
27520 if(NULL == pWdiInd)
27521 {
27522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027523 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027524 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027525 WDI_ASSERT(0);
27526 return WDI_STATUS_E_FAILURE;
27527 }
27528
27529 wpalMemoryZero(pWdiInd, allocSize);
27530
27531 /* Fill in the indication parameters*/
27532 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27533 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27534 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27535 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27536 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27537 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27538 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27539 &(pWakeReasonParams->aDataStart[0]),
27540 pWakeReasonParams->ulStoredDataLen);
27541
ltimariu034f7d62013-01-24 18:54:33 -080027542
27543 if ( pWDICtx->wdiLowLevelIndCB )
27544 {
27545 /*Notify UMAC*/
27546 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27547 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027548
27549 //Free memory allocated for WDI_WakeReasonIndType structure
27550 wpalMemoryFree(pWdiInd);
27551
27552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027553 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027554
27555 return WDI_STATUS_SUCCESS;
27556}
27557#endif // WLAN_WAKEUP_EVENTS
27558
27559void WDI_GetWcnssCompiledApiVersion
27560(
27561 WDI_WlanVersionType *pWcnssApiVersion
27562)
27563{
27564 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27565 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27566 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27567 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27568}
27569
27570/**
27571 @brief Process Set TM Level Rsp function (called when a
27572 response is being received over the bus from HAL)
27573
27574 @param pWDICtx: pointer to the WLAN DAL context
27575 pEventData: pointer to the event information structure
27576
27577 @see
27578 @return Result of the function call
27579*/
27580WDI_Status
27581WDI_ProcessSetTmLevelRsp
27582(
27583 WDI_ControlBlockType* pWDICtx,
27584 WDI_EventInfoType* pEventData
27585)
27586{
27587 WDI_Status wdiStatus;
27588 eHalStatus halStatus;
27589 WDI_SetTmLevelCb wdiSetTmLevelCb;
27590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27591
27592 /*-------------------------------------------------------------------------
27593 Sanity check
27594 -------------------------------------------------------------------------*/
27595 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27596 ( NULL == pEventData->pEventData ))
27597 {
27598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027600 WDI_ASSERT(0);
27601 return WDI_STATUS_E_FAILURE;
27602 }
27603
27604 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27605
27606 /*-------------------------------------------------------------------------
27607 Extract response and send it to UMAC
27608 -------------------------------------------------------------------------*/
27609 halStatus = *((eHalStatus*)pEventData->pEventData);
27610 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27611
27612 /*Notify UMAC*/
27613 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27614
27615 return WDI_STATUS_SUCCESS;
27616}/*WDI_ProcessSetTmLevelRsp*/
27617
27618/**
27619 @brief Process Set Thermal Mitigation level Changed request
27620
27621 @param pWDICtx: pointer to the WLAN DAL context
27622 pEventData: pointer to the event information structure
27623
27624 @see
27625 @return Result of the function call
27626*/
27627WDI_Status
27628WDI_ProcessSetTmLevelReq
27629(
27630 WDI_ControlBlockType* pWDICtx,
27631 WDI_EventInfoType* pEventData
27632)
27633{
27634 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27635 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27636 wpt_uint8* pSendBuffer = NULL;
27637 wpt_uint16 usDataOffset = 0;
27638 wpt_uint16 usSendSize = 0;
27639 tSetThermalMitgationType halTmMsg;
27640
27641 /*-------------------------------------------------------------------------
27642 Sanity check
27643 -------------------------------------------------------------------------*/
27644 if (( NULL == pEventData ) ||
27645 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27646 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27647 {
27648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027649 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027650 WDI_ASSERT(0);
27651 return WDI_STATUS_E_FAILURE;
27652 }
27653
27654 /*-----------------------------------------------------------------------
27655 Get message buffer
27656 -----------------------------------------------------------------------*/
27657 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27658 sizeof(halTmMsg),
27659 &pSendBuffer, &usDataOffset, &usSendSize))||
27660 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27661 {
27662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027663 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027664 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27665 WDI_ASSERT(0);
27666 return WDI_STATUS_E_FAILURE;
27667 }
27668
27669 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27670 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27671
27672 wpalMemoryCopy( pSendBuffer+usDataOffset,
27673 &halTmMsg,
27674 sizeof(halTmMsg));
27675
27676 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27677 pWDICtx->pfncRspCB = NULL;
27678 /*-------------------------------------------------------------------------
27679 Send Get STA Request to HAL
27680 -------------------------------------------------------------------------*/
27681 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27682 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27683}
27684
27685/* Fill the value from the global features enabled array to the global capabilities
27686 * bitmap struct
27687 */
27688static void
27689FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27690{
27691 wpt_int8 i;
27692 for (i=0; i<len; i++)
27693 {
27694 setFeatCaps(fCaps, enabledFeat[i]);
27695 }
27696}
27697
27698/**
27699 @brief WDI_featureCapsExchangeReq
27700 Post feature capability bitmap exchange event.
27701 Host will send its own capability to FW in this req and
27702 expect FW to send its capability back as a bitmap in Response
27703
27704 @param
27705
27706 wdiFeatureCapsExchangeCb: callback called on getting the response.
27707 It is kept to mantain similarity between WDI reqs and if needed, can
27708 be used in future. Currently, It is set to NULL
27709
27710 pUserData: user data will be passed back with the
27711 callback
27712
27713 @see
27714 @return Result of the function call
27715*/
27716WDI_Status
27717WDI_featureCapsExchangeReq
27718(
27719 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27720 void* pUserData
27721)
27722{
27723 WDI_EventInfoType wdiEventData;
27724 wpt_int32 fCapsStructSize;
27725
27726 /*------------------------------------------------------------------------
27727 Sanity Check
27728 ------------------------------------------------------------------------*/
27729 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27730 {
27731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27732 "WDI API call before module is initialized - Fail request");
27733
27734 return WDI_STATUS_E_NOT_ALLOWED;
27735 }
27736
27737 /* Allocate memory separately for global variable carrying FW caps */
27738 fCapsStructSize = sizeof(tWlanFeatCaps);
27739 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27740 if ( NULL == gpHostWlanFeatCaps )
27741 {
27742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027743 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027744 WDI_ASSERT(0);
27745 return WDI_STATUS_MEM_FAILURE;
27746 }
27747
27748 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27749
27750 /*------------------------------------------------------------------------
27751 Fill in Event data and post to the Main FSM
27752 ------------------------------------------------------------------------*/
27753 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27754 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027756 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027757 gpHostWlanFeatCaps->featCaps[0],
27758 gpHostWlanFeatCaps->featCaps[1],
27759 gpHostWlanFeatCaps->featCaps[2],
27760 gpHostWlanFeatCaps->featCaps[3]
27761 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27763 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027764 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27765 wdiEventData.pEventData = gpHostWlanFeatCaps;
27766 wdiEventData.uEventDataSize = fCapsStructSize;
27767 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27768 wdiEventData.pUserData = pUserData;
27769
27770 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27771}
27772
27773/**
Yathishd8713192012-12-10 14:21:35 -080027774 @brief Disable Active mode offload in Host
27775
27776 @param void
27777 @see
27778 @return void
27779*/
27780void
27781WDI_disableCapablityFeature(wpt_uint8 feature_index)
27782{
27783 supportEnabledFeatures[feature_index] = 0;
27784 return;
27785}
27786
27787/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027788 @brief Process Host-FW Capability Exchange Request function
27789
27790 @param pWDICtx: pointer to the WLAN DAL context
27791 pEventData: pointer to the event information structure
27792
27793 @see
27794 @return Result of the function call
27795*/
27796WDI_Status
27797WDI_ProcessFeatureCapsExchangeReq
27798(
27799 WDI_ControlBlockType* pWDICtx,
27800 WDI_EventInfoType* pEventData
27801)
27802{
27803 wpt_uint8* pSendBuffer = NULL;
27804 wpt_uint16 usDataOffset = 0;
27805 wpt_uint16 usSendSize = 0;
27806 wpt_uint16 usLen = 0;
27807
27808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27809
27810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027811 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027812
27813 /*-------------------------------------------------------------------------
27814 Sanity check
27815 -------------------------------------------------------------------------*/
27816 /* Call back function is NULL since not required for cap exchange req */
27817 if (( NULL == pEventData ) ||
27818 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27819 {
27820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027821 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027822 WDI_ASSERT(0);
27823 return WDI_STATUS_E_FAILURE;
27824 }
27825
27826 /*-----------------------------------------------------------------------
27827 Get message buffer
27828 -----------------------------------------------------------------------*/
27829 usLen = sizeof(tWlanFeatCaps);
27830
27831 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27832 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27833 usLen,
27834 &pSendBuffer, &usDataOffset, &usSendSize))||
27835 ( usSendSize < (usDataOffset + usLen )))
27836 {
27837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027838 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027839 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27840 WDI_ASSERT(0);
27841 return WDI_STATUS_E_FAILURE;
27842 }
27843
27844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027845 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027846 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27847 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27848 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27849 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27850 );
27851
27852 /* Copy host caps after the offset in the send buffer */
27853 wpalMemoryCopy( pSendBuffer+usDataOffset,
27854 (tWlanFeatCaps *)pEventData->pEventData,
27855 usLen);
27856
27857 /*-------------------------------------------------------------------------
27858 Send Start Request to HAL
27859 -------------------------------------------------------------------------*/
27860 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27861 (WDI_StartRspCb)pEventData->pCBfnc,
27862 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27863
27864}/*WDI_ProcessFeatureCapsExchangeReq*/
27865
27866/**
27867 @brief Process Host-FW Capability Exchange Response function
27868
27869 @param pWDICtx: pointer to the WLAN DAL context
27870 pEventData: pointer to the event information structure
27871
27872 @see
27873 @return Result of the function call
27874*/
27875WDI_Status
27876WDI_ProcessFeatureCapsExchangeRsp
27877(
27878 WDI_ControlBlockType* pWDICtx,
27879 WDI_EventInfoType* pEventData
27880)
27881{
27882 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27883 wpt_int32 fCapsStructSize;
27884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27885
27886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027887 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027888
27889 /*-------------------------------------------------------------------------
27890 Sanity check
27891 -------------------------------------------------------------------------*/
27892 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27893 ( NULL == pEventData->pEventData ))
27894 {
27895 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027897 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027898 WDI_ASSERT(0);
27899 return WDI_STATUS_E_FAILURE;
27900 }
27901
27902 /* Allocate memory separately for global variable carrying FW caps */
27903 fCapsStructSize = sizeof(tWlanFeatCaps);
27904 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27905 if ( NULL == gpFwWlanFeatCaps )
27906 {
27907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027908 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027909 WDI_ASSERT(0);
27910 return WDI_STATUS_MEM_FAILURE;
27911 }
27912
27913 /*-------------------------------------------------------------------------
27914 Unpack HAL Response Message - the header was already extracted by the
27915 main Response Handling procedure
27916 -------------------------------------------------------------------------*/
27917 /*-------------------------------------------------------------------------
27918 Extract response and send it to UMAC
27919 -------------------------------------------------------------------------*/
27920
27921 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27922 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027924 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027925 gpFwWlanFeatCaps->featCaps[0],
27926 gpFwWlanFeatCaps->featCaps[1],
27927 gpFwWlanFeatCaps->featCaps[2],
27928 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027929 );
27930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27931 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027932 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27933
27934 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27935 if (wdiFeatureCapsExchangeCb != NULL)
27936 wdiFeatureCapsExchangeCb(NULL, NULL);
27937
27938 return WDI_STATUS_SUCCESS;
27939}
27940
Mohit Khanna4a70d262012-09-11 16:30:12 -070027941#ifdef WLAN_FEATURE_11AC
27942WDI_Status
27943WDI_ProcessUpdateVHTOpModeRsp
27944(
27945 WDI_ControlBlockType* pWDICtx,
27946 WDI_EventInfoType* pEventData
27947)
27948{
27949 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27950 WDI_Status wdiStatus;
27951 eHalStatus halStatus;
27952
27953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27954
27955 /*-------------------------------------------------------------------------
27956 Sanity check
27957 -------------------------------------------------------------------------*/
27958 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27959 ( NULL == pEventData->pEventData))
27960 {
27961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027962 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027963 WDI_ASSERT(0);
27964 return WDI_STATUS_E_FAILURE;
27965 }
27966 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27967
27968 /*-------------------------------------------------------------------------
27969 Extract response and send it to UMAC
27970 -------------------------------------------------------------------------*/
27971 halStatus = *((eHalStatus*)pEventData->pEventData);
27972 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27973
27974 /*Notify UMAC*/
27975 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27976
27977 return WDI_STATUS_SUCCESS;
27978}
27979#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027980/**
27981 @brief WDI_getHostWlanFeatCaps
27982 WDI API that returns whether the feature passed to it as enum value in
27983 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27984 variable storing host capability bitmap to find this. This can be used by
27985 other moduels to decide certain things like call different APIs based on
27986 whether a particular feature is supported.
27987
27988 @param
27989
27990 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27991
27992 @see
27993 @return
27994 0 - if the feature is NOT supported in host
27995 any non-zero value - if the feature is SUPPORTED in host.
27996*/
27997wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27998{
27999 wpt_uint8 featSupported = 0;
28000 if (gpHostWlanFeatCaps != NULL)
28001 {
28002 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28003 }
28004 else
28005 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028007 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028008 }
28009 return featSupported;
28010}
28011
28012/**
28013 @brief WDI_getFwWlanFeatCaps
28014 WDI API that returns whether the feature passed to it as enum value in
28015 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28016 variable storing host capability bitmap to find this. This can be used by
28017 other moduels to decide certain things like call different APIs based on
28018 whether a particular feature is supported.
28019
28020 @param
28021
28022 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28023 in wlan_hal_msg.h.
28024
28025 @see
28026 @return
28027 0 - if the feature is NOT supported in FW
28028 any non-zero value - if the feature is SUPPORTED in FW.
28029*/
28030wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28031{
28032 wpt_uint8 featSupported = 0;
28033 if (gpFwWlanFeatCaps != NULL)
28034 {
28035 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28036 }
28037 else
28038 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028040 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028041 }
28042 return featSupported;
28043}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028044
28045#ifdef WLAN_FEATURE_11AC
28046WDI_Status
28047WDI_ProcessUpdateVHTOpModeReq
28048(
28049 WDI_ControlBlockType* pWDICtx,
28050 WDI_EventInfoType* pEventData
28051)
28052{
28053 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28054 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28055 wpt_uint8* pSendBuffer = NULL;
28056 wpt_uint16 usDataOffset = 0;
28057 wpt_uint16 usSendSize = 0;
28058
28059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28060
28061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028062 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028063
28064 /*-------------------------------------------------------------------------
28065 Sanity check
28066 -------------------------------------------------------------------------*/
28067 if (( NULL == pEventData ) ||
28068 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28069 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28070 {
28071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028072 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028073 WDI_ASSERT(0);
28074 return WDI_STATUS_E_FAILURE;
28075 }
28076
28077 /*-----------------------------------------------------------------------
28078 Get message buffer
28079 -----------------------------------------------------------------------*/
28080 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28081 sizeof(WDI_UpdateVHTOpMode),
28082 &pSendBuffer, &usDataOffset, &usSendSize))||
28083 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28084 {
28085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28086 "Unable to get send buffer in update vht opMode req");
28087 WDI_ASSERT(0);
28088 return WDI_STATUS_E_FAILURE;
28089 }
28090
28091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain5f7589c2013-11-17 22:05:35 -080028092 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028093
28094 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28095 sizeof(WDI_UpdateVHTOpMode));
28096
28097 /*-------------------------------------------------------------------------
28098 Send Start Request to HAL
28099 -------------------------------------------------------------------------*/
28100 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28101 wdiVHTOpModeCb,
28102 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28103
28104}
28105
28106WDI_Status
28107WDI_UpdateVHTOpModeReq
28108(
28109 WDI_UpdateVHTOpMode *pData,
28110 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28111 void* pUserData
28112)
28113{
28114 WDI_EventInfoType wdiEventData;
28115
28116 /*------------------------------------------------------------------------
28117 Sanity Check
28118 ------------------------------------------------------------------------*/
28119 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28120 {
28121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28122 "WDI API call before module is initialized - Fail request");
28123
28124 return WDI_STATUS_E_NOT_ALLOWED;
28125 }
28126
28127 /*------------------------------------------------------------------------
28128 Fill in Event data and post to the Main FSM
28129 ------------------------------------------------------------------------*/
28130 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28131 wdiEventData.pEventData = pData;
28132 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28133 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28134 wdiEventData.pUserData = pUserData;
28135
28136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain5f7589c2013-11-17 22:05:35 -080028137 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028138
28139 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28140
28141}
28142#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028143
28144/**
28145 @brief WDI_TransportChannelDebug -
28146 Display DXE Channel debugging information
28147 User may request to display DXE channel snapshot
28148 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028149
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080028150 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028151 @param enableStallDetect : Enable stall detect feature
28152 This feature will take effect to data performance
28153 Not integrate till fully verification
28154 @see
28155 @return none
28156*/
28157void WDI_TransportChannelDebug
28158(
28159 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028160 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028161)
28162{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028163 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028164 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028165}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028166/**
28167 @brief WDI_SsrTimerCB
28168 Callback function for SSR timer, if this is called then the graceful
28169 shutdown for Riva did not happen.
28170
28171 @param pUserData : user data to timer
28172
28173 @see
28174 @return none
28175*/
28176void
28177WDI_SsrTimerCB
28178(
28179 void *pUserData
28180)
28181{
28182 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28184
28185 if (NULL == pWDICtx )
28186 {
28187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028188 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028189 WDI_ASSERT(0);
28190 return;
28191 }
28192 wpalRivaSubystemRestart();
28193
28194 return;
28195
28196}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070028197
28198/**
28199 @brief WDI_SetEnableSSR -
28200 This API is called to enable/disable SSR on WDI timeout.
28201
28202 @param enableSSR : enable/disable SSR
28203
28204 @see
28205 @return none
28206*/
28207void WDI_SetEnableSSR(wpt_boolean enableSSR)
28208{
28209 gWDICb.bEnableSSR = enableSSR;
28210}
Leo Chang00bc9132013-08-01 19:21:11 -070028211
28212
28213#ifdef FEATURE_WLAN_LPHB
28214/**
Leo Chang8d19a5f2013-09-26 13:32:26 -070028215 @brief WDI_ProcessLphbInd -
Leo Chang00bc9132013-08-01 19:21:11 -070028216 This function will be invoked when FW detects low power
28217 heart beat failure
28218
28219 @param pWDICtx : wdi context
28220 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070028221 @see
28222 @return Result of the function call
28223*/
28224WDI_Status
Leo Chang8d19a5f2013-09-26 13:32:26 -070028225WDI_ProcessLphbInd
Leo Chang00bc9132013-08-01 19:21:11 -070028226(
28227 WDI_ControlBlockType* pWDICtx,
28228 WDI_EventInfoType* pEventData
28229)
28230{
28231 WDI_LowLevelIndType wdiInd;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028232 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang00bc9132013-08-01 19:21:11 -070028233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28234
28235 /*-------------------------------------------------------------------------
28236 Sanity check
28237 -------------------------------------------------------------------------*/
28238 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28239 (NULL == pEventData->pEventData))
28240 {
28241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28242 "%s: Invalid parameters", __func__);
28243 WDI_ASSERT(0);
28244 return WDI_STATUS_E_FAILURE;
28245 }
28246
28247 /*-------------------------------------------------------------------------
28248 Extract indication and send it to UMAC
28249 -------------------------------------------------------------------------*/
Leo Chang8d19a5f2013-09-26 13:32:26 -070028250 wpalMemoryCopy(&lphbIndicationParam,
28251 pEventData->pEventData,
28252 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang00bc9132013-08-01 19:21:11 -070028253
Leo Chang8d19a5f2013-09-26 13:32:26 -070028254 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070028255 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028256 lphbIndicationParam.bssIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028257 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028258 lphbIndicationParam.sessionIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028259 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028260 lphbIndicationParam.protocolType;
Leo Chang00bc9132013-08-01 19:21:11 -070028261 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028262 lphbIndicationParam.eventReason;
Leo Chang00bc9132013-08-01 19:21:11 -070028263 /*Notify UMAC*/
28264 if (pWDICtx->wdiLowLevelIndCB)
28265 {
28266 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28267 }
28268
28269 return WDI_STATUS_SUCCESS;
28270}
28271
28272/**
28273 @brief WDI_ProcessLphbCfgRsp -
28274 LPHB configuration response from FW
28275
28276 @param pWDICtx : wdi context
28277 pEventData : indication data
28278
28279 @see
28280 @return Result of the function call
28281*/
28282WDI_Status WDI_ProcessLphbCfgRsp
28283(
28284 WDI_ControlBlockType* pWDICtx,
28285 WDI_EventInfoType* pEventData
28286)
28287{
28288 WDI_Status wdiStatus;
28289 eHalStatus halStatus;
28290 WDI_LphbCfgCb wdiLphbCfgCb;
28291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28292
28293 /*-------------------------------------------------------------------------
28294 Sanity check
28295 -------------------------------------------------------------------------*/
28296 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28297 (NULL == pEventData->pEventData))
28298 {
28299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28300 "%s: Invalid parameters", __func__);
28301 WDI_ASSERT(0);
28302 return WDI_STATUS_E_FAILURE;
28303 }
28304
28305 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28306
28307 /*-------------------------------------------------------------------------
28308 Extract response and send it to UMAC
28309 -------------------------------------------------------------------------*/
28310 halStatus = *((eHalStatus*)pEventData->pEventData);
28311 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28312
28313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28314 "LPHB Cfg Rsp Return status %d", wdiStatus);
28315 /*Notify UMAC*/
28316 if (NULL != wdiLphbCfgCb)
28317 {
28318 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28319 }
28320
28321 return WDI_STATUS_SUCCESS;
28322}
28323
28324/**
28325 @brief WDI_ProcessLPHBConfReq -
28326 LPHB configuration request to FW
28327
28328 @param pWDICtx : wdi context
28329 pEventData : indication data
28330
28331 @see
28332 @return none
28333*/
28334WDI_Status WDI_ProcessLPHBConfReq
28335(
28336 WDI_ControlBlockType* pWDICtx,
28337 WDI_EventInfoType* pEventData
28338)
28339{
28340 WDI_LPHBReq *pLphbReqParams;
28341 WDI_Status wdiStatus;
28342 wpt_uint8* pSendBuffer = NULL;
28343 wpt_uint16 usDataOffset = 0;
28344 wpt_uint16 usSendSize = 0;
28345 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28347
28348 /*-------------------------------------------------------------------------
28349 Sanity check
28350 -------------------------------------------------------------------------*/
28351 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28352 {
28353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28354 "%s: Invalid parameters in Suspend ind",__func__);
28355 WDI_ASSERT(0);
28356 return WDI_STATUS_E_FAILURE;
28357 }
28358
28359 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28360
28361 /*-----------------------------------------------------------------------
28362 Get message buffer
28363 -----------------------------------------------------------------------*/
28364 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28365 WDI_LPHB_CFG_REQ,
28366 sizeof(tHalLowPowerHeartBeatReqMsg),
28367 &pSendBuffer, &usDataOffset, &usSendSize))||
28368 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28369 {
28370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28371 "Unable to get send buffer in LPHB Ind ");
28372 WDI_ASSERT(0);
28373 return WDI_STATUS_E_FAILURE;
28374 }
28375
28376 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28377 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28378
28379 halLphbReqRarams->lowPowerHeartBeatCmdType =
28380 (tANI_U16)(++pLphbReqParams->cmd);
28381 switch ((tANI_U16)pLphbReqParams->cmd)
28382 {
28383 case WDI_LPHB_SET_EN_PARAMS_INDID:
28384 halLphbReqRarams->sessionIdx =
28385 pLphbReqParams->params.lphbEnableReq.session;
28386 halLphbReqRarams->options.control.heartBeatEnable =
28387 pLphbReqParams->params.lphbEnableReq.enable;
28388 halLphbReqRarams->options.control.heartBeatType =
28389 pLphbReqParams->params.lphbEnableReq.item;
28390 break;
28391
28392 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28393 halLphbReqRarams->sessionIdx =
28394 pLphbReqParams->params.lphbTcpParamReq.session;
28395 halLphbReqRarams->options.tcpParams.timeOutSec =
28396 pLphbReqParams->params.lphbTcpParamReq.timeout;
28397 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28398 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28399 sizeof(v_U32_t));
28400 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28401 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28402 sizeof(v_U32_t));
28403
28404 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28405 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28406 WDI_MAC_ADDR_LEN);
28407
28408 halLphbReqRarams->options.tcpParams.hostPort =
28409 pLphbReqParams->params.lphbTcpParamReq.src_port;
28410 halLphbReqRarams->options.tcpParams.destPort =
28411 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028412 halLphbReqRarams->options.tcpParams.timePeriodSec =
28413 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28414 halLphbReqRarams->options.tcpParams.tcpSn =
28415 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang00bc9132013-08-01 19:21:11 -070028416 break;
28417
28418 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28419 halLphbReqRarams->sessionIdx =
28420 pLphbReqParams->params.lphbTcpFilterReq.session;
28421 halLphbReqRarams->options.tcpUdpFilter.offset =
28422 pLphbReqParams->params.lphbTcpFilterReq.offset;
28423 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28424 pLphbReqParams->params.lphbTcpFilterReq.length;
28425 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28426 pLphbReqParams->params.lphbTcpFilterReq.filter,
28427 WDI_LPHB_FILTER_LEN);
28428 break;
28429
28430 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28431 halLphbReqRarams->sessionIdx =
28432 pLphbReqParams->params.lphbUdpParamReq.session;
28433 halLphbReqRarams->options.udpParams.timeOutSec =
28434 pLphbReqParams->params.lphbUdpParamReq.timeout;
28435 halLphbReqRarams->options.udpParams.timePeriodSec =
28436 pLphbReqParams->params.lphbUdpParamReq.interval;
28437 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28438 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28439 sizeof(v_U32_t));
28440 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28441 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28442 sizeof(v_U32_t));
28443
28444 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28445 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28446 WDI_MAC_ADDR_LEN);
28447
28448 halLphbReqRarams->options.udpParams.hostPort =
28449 pLphbReqParams->params.lphbUdpParamReq.src_port;
28450 halLphbReqRarams->options.udpParams.destPort =
28451 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28452 break;
28453
28454 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28455 halLphbReqRarams->sessionIdx =
28456 pLphbReqParams->params.lphbUdpFilterReq.session;
28457 halLphbReqRarams->options.tcpUdpFilter.offset =
28458 pLphbReqParams->params.lphbUdpFilterReq.offset;
28459 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28460 pLphbReqParams->params.lphbUdpFilterReq.length;
28461 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28462 pLphbReqParams->params.lphbUdpFilterReq.filter,
28463 WDI_LPHB_FILTER_LEN);
28464 break;
28465
28466 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28467 /* NA */
28468 break;
28469
28470 default:
28471 break;
28472 }
28473
28474 /*-------------------------------------------------------------------------
28475 Send Suspend Request to HAL
28476 -------------------------------------------------------------------------*/
28477 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28478 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28479
28480 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28481 usSendSize, pWDICtx->pfncRspCB,
28482 pWDICtx->pReqStatusUserData,
28483 WDI_LPHB_CFG_RESP);
28484
28485 return wdiStatus;
28486}
28487
28488/**
28489 @brief WDI_LPHBConfReq -
28490 LPHB configuration request API
28491
28492 @param lphbconfParam : configuration parameter
28493 usrData : client context
28494 lphbCfgCb : callback function pointer
28495
28496 @see
28497 @return Success or fail status code
28498*/
28499WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28500 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28501{
28502 WDI_EventInfoType wdiEventData;
28503
28504 /*------------------------------------------------------------------------
28505 Sanity Check
28506 ------------------------------------------------------------------------*/
28507 if (eWLAN_PAL_FALSE == gWDIInitialized)
28508 {
28509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28510 "WDI API call before module is initialized - Fail request");
28511
28512 return WDI_STATUS_E_NOT_ALLOWED;
28513 }
28514
28515 /*------------------------------------------------------------------------
28516 Fill in Event data and post to the Main FSM
28517 ------------------------------------------------------------------------*/
28518 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28519 wdiEventData.pEventData = lphbconfParam;
28520 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28521 wdiEventData.pCBfnc = lphbCfgCb;
28522 wdiEventData.pUserData = usrData;
28523
28524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28525}
28526#endif /* FEATURE_WLAN_LPHB */
28527
Ravi Joshi96d77342013-07-23 08:37:49 -070028528/**
28529 @brief WDI_ProcessIbssPeerInactivityInd
28530 Process peer inactivity indication coming from HAL
28531
28532 @param pWDICtx: pointer to the WLAN DAL context
28533 pEventData: pointer to the event information structure
28534 @see
28535 @return Result of the function call
28536*/
28537WDI_Status
28538WDI_ProcessIbssPeerInactivityInd
28539(
28540 WDI_ControlBlockType* pWDICtx,
28541 WDI_EventInfoType* pEventData
28542)
28543{
28544 WDI_LowLevelIndType wdiInd;
28545 tIbssPeerInactivityIndMsg halIbssIndMsg;
28546
28547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28548
28549 /*-------------------------------------------------------------------------
28550 Sanity check
28551 -------------------------------------------------------------------------*/
28552 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28553 ( NULL == pEventData->pEventData ))
28554 {
28555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28556 "%s: Invalid parameters", __func__);
28557 WDI_ASSERT( 0 );
28558 return WDI_STATUS_E_FAILURE;
28559 }
28560
28561 /*-------------------------------------------------------------------------
28562 Extract indication and send it to UMAC
28563 -------------------------------------------------------------------------*/
28564 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28565 pEventData->pEventData,
28566 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28567
28568 /*Fill in the indication parameters*/
28569 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28570
28571 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28572 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28573
28574 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28575 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28576
28577 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28578 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28579 sizeof(tSirMacAddr));
28580
28581 /*Notify UMAC*/
28582 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28583
28584 return WDI_STATUS_SUCCESS;
28585
28586} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev3db91f12013-10-05 11:03:42 +053028587
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028588/**
28589*@brief WDI_RateUpdateInd will be called when the upper MAC
28590 requests the device to set rates.
Rajeev3db91f12013-10-05 11:03:42 +053028591
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028592
28593 @param wdiRateUpdateIndParams:
28594
28595
28596 @see
28597 @return Result of the function call
28598*/
28599WDI_Status
28600WDI_RateUpdateInd
28601(
28602 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
28603)
28604{
28605 WDI_EventInfoType wdiEventData;
28606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28607
28608 /*------------------------------------------------------------------------
28609 Sanity Check
28610 ------------------------------------------------------------------------*/
28611 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28612 {
28613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28614 "WDI API call before module is initialized - Fail request");
28615
28616 return WDI_STATUS_E_NOT_ALLOWED;
28617 }
28618
28619 /*------------------------------------------------------------------------
28620 Fill in Event data and post to the Main FSM
28621 ------------------------------------------------------------------------*/
28622 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
28623 wdiEventData.pEventData = wdiRateUpdateIndParams;
28624 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
28625 wdiEventData.pCBfnc = NULL;
28626 wdiEventData.pUserData = NULL;
28627
28628 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28629
28630}/* WDI_RateUpdateInd */
28631
28632/**
28633 @brief Process Rate Update Indication and post it to HAL
28634
28635 @param pWDICtx: pointer to the WLAN DAL context
28636 pEventData: pointer to the event information structure
28637
28638 @see
28639 @return Result of the function call
28640*/
28641WDI_Status
28642WDI_ProcessRateUpdateInd
28643(
28644 WDI_ControlBlockType* pWDICtx,
28645 WDI_EventInfoType* pEventData
28646)
28647{
28648 wpt_uint8* pSendBuffer = NULL;
28649 wpt_uint16 usDataOffset = 0;
28650 wpt_uint16 usSendSize = 0;
28651 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
28652 tHalRateUpdateInd *pRateUpdateInd;
28653 WDI_Status wdiStatus;
28654
28655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28656
28657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28658 "%s", __func__);
28659
28660 /*-------------------------------------------------------------------------
28661 Sanity check
28662 -------------------------------------------------------------------------*/
28663 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28664 {
28665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28666 "%s: Invalid parameters", __func__);
28667 WDI_ASSERT(0);
28668 return WDI_STATUS_E_FAILURE;
28669 }
28670 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
28671 /*-----------------------------------------------------------------------
28672 Get message buffer
28673 -----------------------------------------------------------------------*/
28674
28675 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28676 WDI_RATE_UPDATE_IND,
28677 sizeof(tHalRateUpdateParams),
28678 &pSendBuffer, &usDataOffset, &usSendSize))||
28679 ( usSendSize < (usDataOffset +
28680 sizeof(tHalRateUpdateParams) )))
28681 {
28682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28683 "Unable to get send buffer in Rate Update Indication %p ",
28684 pEventData);
28685 WDI_ASSERT(0);
28686 return WDI_STATUS_E_FAILURE;
28687 }
28688
28689 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
28690
28691 /* Copy the bssid */
28692 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
28693 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
28694
28695 /* Copy the tx flags */
28696 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
28697 pwdiRateUpdateInd->ucastDataRateTxFlag;
28698 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
28699 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
28700 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
28701 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
28702 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
28703 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
28704
28705 /* Copy the tx rates */
28706 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
28707 pwdiRateUpdateInd->ucastDataRate;
28708 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
28709 pwdiRateUpdateInd->reliableMcastDataRate;
28710 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
28711 pwdiRateUpdateInd->mcastDataRate24GHz;
28712 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
28713 pwdiRateUpdateInd->mcastDataRate5GHz;
28714
28715 /*-------------------------------------------------------------------------
28716 Send Rate Update Indication to HAL
28717 -------------------------------------------------------------------------*/
28718 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
28719 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
28720
28721 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
28722
28723 return (wdiStatus != WDI_STATUS_SUCCESS) ?
28724 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
28725
28726} /* WDI_ProcessRateUpdateInd */
28727
28728#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev3db91f12013-10-05 11:03:42 +053028729/**
28730 @brief Process stop batch indication from WDA
28731
28732 @param pWDICtx: pointer to the WLAN DAL context
28733 pEventData: pointer to the event information structure
28734
28735 @see
28736 @return Result of the function call
28737*/
28738WDI_Status
28739WDI_ProcessStopBatchScanInd
28740(
28741 WDI_ControlBlockType* pWDICtx,
28742 WDI_EventInfoType* pEventData
28743)
28744{
28745 wpt_uint8* pSendBuffer = NULL;
28746 wpt_uint16 usDataOffset = 0;
28747 wpt_uint16 usSendSize = 0;
28748 WDI_Status wdiStatus;
28749 tHalBatchScanStopIndParam *pHalInd = NULL;
28750 WDI_StopBatchScanIndType *pWdiInd = NULL;
28751
28752
28753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28754
28755 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28756 "%s", __func__);
28757
28758 /*-------------------------------------------------------------------------
28759 Sanity check
28760 -------------------------------------------------------------------------*/
28761
28762 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28763 {
28764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28765 "%s: Invalid parameters", __func__);
28766 WDI_ASSERT(0);
28767 return WDI_STATUS_E_FAILURE;
28768 }
28769 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
28770 /*-----------------------------------------------------------------------
28771 Get message buffer
28772 -----------------------------------------------------------------------*/
28773
28774 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28775 WDI_STOP_BATCH_SCAN_IND,
28776 sizeof(tHalBatchScanStopIndParam),
28777 &pSendBuffer, &usDataOffset, &usSendSize))||
28778 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
28779 {
28780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28781 "Unable to get send buffer in stop batch scan ind %p ",
28782 pEventData);
28783 WDI_ASSERT(0);
28784 return WDI_STATUS_E_FAILURE;
28785 }
28786
28787 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
28788 pHalInd->param = pWdiInd->param;
28789
28790 pWDICtx->pReqStatusUserData = NULL;
28791 pWDICtx->pfncRspCB = NULL;
28792 /*-------------------------------------------------------------------------
28793 Send Stop batch scan indication to HAL
28794 -------------------------------------------------------------------------*/
28795 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28796 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28797}
28798
28799/**
28800 @brief This API is called to trigger batch scan results from FW
28801
28802 @param pWDICtx: pointer to the WLAN DAL context
28803 pEventData: pointer to the event information structure
28804
28805 @see
28806 @return Result of the function call
28807*/
28808WDI_Status
28809WDI_ProcessTriggerBatchScanResultInd
28810(
28811 WDI_ControlBlockType* pWDICtx,
28812 WDI_EventInfoType* pEventData
28813)
28814{
28815 WDI_Status wdiStatus;
28816 wpt_uint8* pSendBuffer = NULL;
28817 wpt_uint16 usDataOffset = 0;
28818 wpt_uint16 usSendSize = 0;
28819 tHalBatchScanTriggerResultParam *pHalInd = NULL;
28820 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
28821
28822
28823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28824
28825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28826 "%s", __func__);
28827
28828 /*-------------------------------------------------------------------------
28829 Sanity check
28830 -------------------------------------------------------------------------*/
28831
28832 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28833 {
28834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28835 "%s: Invalid parameters", __func__);
28836 WDI_ASSERT(0);
28837 return WDI_STATUS_E_FAILURE;
28838 }
28839 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
28840 /*-----------------------------------------------------------------------
28841 Get message buffer
28842 -----------------------------------------------------------------------*/
28843
28844 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28845 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
28846 sizeof(tHalBatchScanTriggerResultParam),
28847 &pSendBuffer, &usDataOffset, &usSendSize))||
28848 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
28849 {
28850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28851 "Unable to get send buffer in stop batch scan ind %p ",
28852 pEventData);
28853 WDI_ASSERT(0);
28854 return WDI_STATUS_E_FAILURE;
28855 }
28856
28857 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
28858 pHalInd->param = pWdiInd->param;
28859
28860 pWDICtx->pReqStatusUserData = NULL;
28861 pWDICtx->pfncRspCB = NULL;
28862 /*-------------------------------------------------------------------------
28863 Send trigger batch scan result indication to HAL
28864 -------------------------------------------------------------------------*/
28865 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28866 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28867}
28868
28869
28870/**
28871 @brief Process set batch scan response from FW
28872
28873 @param pWDICtx: pointer to the WLAN DAL context
28874 pEventData: pointer to the event information structure
28875
28876 @see
28877 @return Result of the function call
28878*/
28879WDI_Status
28880WDI_ProcessSetBatchScanRsp
28881(
28882 WDI_ControlBlockType* pWDICtx,
28883 WDI_EventInfoType* pEventData
28884)
28885{
28886 WDI_SetBatchScanCb wdiSetBatchScanCb;
28887 WDI_SetBatchScanRspType *pSetBatchScanRsp;
28888
28889 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
28890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28891
28892 /*sanity check*/
28893 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28894 ( NULL == pEventData->pEventData))
28895 {
28896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28897 "%s: Invalid parameters", __func__);
28898 WDI_ASSERT(0);
28899 return WDI_STATUS_E_FAILURE;
28900 }
28901
28902 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
28903 if ( NULL == wdiSetBatchScanCb)
28904 {
28905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28906 "%s: call back function is NULL", __func__);
28907 WDI_ASSERT(0);
28908 return WDI_STATUS_E_FAILURE;
28909 }
28910
28911 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
28912
28913 if (NULL == pSetBatchScanRsp)
28914 {
28915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080028916 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev3db91f12013-10-05 11:03:42 +053028917 pWDICtx, pEventData, pEventData->pEventData);
28918 WDI_ASSERT(0);
28919 return WDI_STATUS_E_FAILURE;
28920 }
28921
28922 /*extract response and send it to UMAC*/
28923 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
28924
28925 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
28926
28927 /*Notify UMAC*/
28928 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
28929
28930 wpalMemoryFree(pSetBatchScanRsp);
28931
28932 return WDI_STATUS_SUCCESS;
28933}/*WDI_ProcessSetBatchScanRsp*/
28934
28935/**
28936 @brief Process batch scan result indication from FW
28937
28938 @param pWDICtx: pointer to the WLAN DAL context
28939 pEventData: pointer to the event information structure
28940
28941 @see
28942 @return Result of the function call
28943*/
28944WDI_Status
28945WDI_ProcessBatchScanResultInd
28946(
28947 WDI_ControlBlockType* pWDICtx,
28948 WDI_EventInfoType* pEventData
28949)
28950{
28951 void *pBatchScanResultInd;
28952 WDI_LowLevelIndType wdiInd;
28953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28954
28955 /*sanity check*/
28956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28957 ( NULL == pEventData->pEventData))
28958 {
28959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28960 "%s: Invalid parameters", __func__);
28961 WDI_ASSERT(0);
28962 return WDI_STATUS_E_FAILURE;
28963 }
28964
28965 /*extract response and send it to UMAC*/
28966 pBatchScanResultInd = (void *)pEventData->pEventData;
28967
28968 /*Fill in the indication parameters*/
28969 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
28970
28971 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
28972
28973 /*Notify UMAC*/
28974 if (pWDICtx->wdiLowLevelIndCB)
28975 {
28976 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28977 }
28978 else
28979 {
28980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28981 "%s: WDILowLevelIndCb is null", __func__);
28982 WDI_ASSERT(0);
28983 return WDI_STATUS_E_FAILURE;
28984 }
28985
28986 return WDI_STATUS_SUCCESS;
28987} /*End of WDI_ProcessBatchScanResultInd*/
28988
28989/**
28990 @brief WDI_ProcessSetBatchScanReq -
28991 Set batch scan request to FW
28992
28993 @param pWDICtx : wdi context
28994 pEventData : indication data
28995
28996 @see
28997 @return none
28998*/
28999WDI_Status WDI_ProcessSetBatchScanReq
29000(
29001 WDI_ControlBlockType* pWDICtx,
29002 WDI_EventInfoType* pEventData
29003)
29004{
29005 WDI_SetBatchScanReqType *pWdiReq;
29006 WDI_Status wdiStatus;
29007 wpt_uint8* pSendBuffer = NULL;
29008 wpt_uint16 usDataOffset = 0;
29009 wpt_uint16 usSendSize = 0;
29010 tHalBatchScanSetParams *pHalReq;
29011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29012
29013 /*sanity check*/
29014 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29015 {
29016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29017 "%s: Invalid parameters in set batch scan request", __func__);
29018 WDI_ASSERT(0);
29019 return WDI_STATUS_E_FAILURE;
29020 }
29021
29022
29023 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29024
29025
29026 /*get message buffer*/
29027 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29028 WDI_SET_BATCH_SCAN_REQ,
29029 sizeof(tHalBatchScanSetParams),
29030 &pSendBuffer, &usDataOffset, &usSendSize))||
29031 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29032 {
29033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29034 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29035 WDI_ASSERT(0);
29036 return WDI_STATUS_E_FAILURE;
29037 }
29038
29039 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29040
29041 pHalReq->rtt = pWdiReq->rtt;
29042 pHalReq->rfBand = pWdiReq->rfBand;
29043 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29044 pHalReq->scanInterval = pWdiReq->scanFrequency;
29045 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29046
29047 /*send set batch scan request to fw*/
29048 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29049 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29050
29051 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29052 usSendSize, pWDICtx->pfncRspCB,
29053 pWDICtx->pReqStatusUserData,
29054 WDI_SET_BATCH_SCAN_RESP);
29055
29056 return wdiStatus;
29057}
29058
29059/**
29060 @brief WDI_SetBatchScanReq
29061 This API is called to set batch scan request in FW
29062
29063 @param pBatchScanReqParam : pointer to set batch scan re param
29064 usrData : Client context
29065 setBatchScanRspCb : set batch scan resp callback
29066 @see
29067 @return SUCCESS or FAIL
29068*/
29069WDI_Status WDI_SetBatchScanReq
29070(
29071 void *pBatchScanReqParam,
29072 void *usrData,
29073 WDI_SetBatchScanCb setBatchScanRspCb
29074)
29075{
29076 WDI_EventInfoType wdiEventData;
29077
29078 /*sanity check*/
29079 if (eWLAN_PAL_FALSE == gWDIInitialized)
29080 {
29081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29082 "WDI API call before module is initialized - Fail request");
29083
29084 return WDI_STATUS_E_NOT_ALLOWED;
29085 }
29086
29087 /* fill in event data and post to the main FSM */
29088 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29089 wdiEventData.pEventData = pBatchScanReqParam;
29090 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29091 wdiEventData.pCBfnc = setBatchScanRspCb;
29092 wdiEventData.pUserData = usrData;
29093
29094 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29095}
29096
29097/**
29098 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29099
29100 @param None
29101
29102 @see
29103
29104 @return Status of the request
29105*/
29106WDI_Status
29107WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29108{
29109 WDI_EventInfoType wdiEventData;
29110
29111 /*-------------------------------------------------------------------------
29112 Sanity Check
29113 ------------------------------------------------------------------------*/
29114 if (eWLAN_PAL_FALSE == gWDIInitialized)
29115 {
29116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29117 "WDI API call before module is initialized - Fail request!");
29118
29119 return WDI_STATUS_E_NOT_ALLOWED;
29120 }
29121
29122 /*-------------------------------------------------------------------------
29123 Fill in Event data and post to the Main FSM
29124 ------------------------------------------------------------------------*/
29125 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29126 wdiEventData.pEventData = pWdiReq;
29127 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29128 wdiEventData.pCBfnc = NULL;
29129 wdiEventData.pUserData = NULL;
29130
29131 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29132}
29133
29134/**
29135 @brief WDI_TriggerBatchScanResultInd
29136 This API is called to pull batch scan result from FW
29137
29138 @param pWdiReq : pointer to get batch scan ind param
29139 @see
29140 @return SUCCESS or FAIL
29141*/
29142WDI_Status WDI_TriggerBatchScanResultInd
29143(
29144 WDI_TriggerBatchScanResultIndType *pWdiReq
29145)
29146{
29147 WDI_EventInfoType wdiEventData;
29148 /*-------------------------------------------------------------------------
29149 Sanity Check
29150 ------------------------------------------------------------------------*/
29151 if (eWLAN_PAL_FALSE == gWDIInitialized)
29152 {
29153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29154 "WDI API call before module is initialized - Fail request!");
29155
29156 return WDI_STATUS_E_NOT_ALLOWED;
29157 }
29158
29159 /*-------------------------------------------------------------------------
29160 Fill in Event data and post to the Main FSM
29161 ------------------------------------------------------------------------*/
29162 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29163 wdiEventData.pEventData = pWdiReq;
29164 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29165 wdiEventData.pCBfnc = NULL;
29166 wdiEventData.pUserData = NULL;
29167
29168 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29169}
Rajeev3db91f12013-10-05 11:03:42 +053029170#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Changd95d6622013-12-15 15:18:55 -080029171
29172#ifdef FEATURE_WLAN_CH_AVOID
29173/**
29174 @brief v -WDI_ProcessChAvoidInd
29175
29176
29177 @param pWDICtx : wdi context
29178 pEventData : indication data
29179 @see
29180 @return Result of the function call
29181*/
29182WDI_Status
29183WDI_ProcessChAvoidInd
29184(
29185 WDI_ControlBlockType* pWDICtx,
29186 WDI_EventInfoType* pEventData
29187)
29188{
29189 WDI_LowLevelIndType wdiInd;
29190 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
29191 wpt_uint16 rangeLoop;
29192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29193
29194 /*-------------------------------------------------------------------------
29195 Sanity check
29196 -------------------------------------------------------------------------*/
29197 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29198 (NULL == pEventData->pEventData))
29199 {
29200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29201 "%s: Invalid parameters", __func__);
29202 WDI_ASSERT(0);
29203 return WDI_STATUS_E_FAILURE;
29204 }
29205
29206 /*-------------------------------------------------------------------------
29207 Extract indication and send it to UMAC
29208 -------------------------------------------------------------------------*/
29209 wpalMemoryCopy(&chAvoidIndicationParam,
29210 pEventData->pEventData,
29211 sizeof(tHalAvoidFreqRangeIndParams));
29212
29213 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
29214 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
29215 chAvoidIndicationParam.avoidCnt;
29216 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
29217 (void *)chAvoidIndicationParam.avoidRange,
29218 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
29219 sizeof(WDI_ChAvoidFreqType));
29220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29221 "%s: band count %d", __func__,
29222 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
29223 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
29224 {
29225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29226 "%s: srart freq %d, end freq %d", __func__,
29227 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
29228 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
29229 }
29230
29231 /*Notify UMAC*/
29232 if (pWDICtx->wdiLowLevelIndCB)
29233 {
29234 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29235 }
29236
29237 return WDI_STATUS_SUCCESS;
29238}
29239#endif /* FEATURE_WLAN_CH_AVOID */
29240