blob: 2884177cf15344955acf377c1d6d5d41397e2a79 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
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
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
Jeff Johnson295189b2012-06-20 16:38:30 -0700105#include "pttMsgApi.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700106
107/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700108 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700109 ===========================================================================*/
110#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
111
Jeff Johnsone7245742012-09-05 17:12:55 -0700112#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
113#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
114
Yue Ma70627492013-03-28 11:33:46 -0700115#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700116
117#ifdef FEATURE_WLAN_SCAN_PNO
118#define WDI_PNO_VERSION_MASK 0x8000
119#endif
120
121/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700122static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700123/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700124static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700125/* array of features supported. Need to add a new feature
126 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
127 */
128static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800129 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800130#ifdef WLAN_SOFTAP_VSTA_FEATURE
131 ,SAP32STA
132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800135#ifdef FEATURE_WLAN_TDLS
Yathishd8713192012-12-10 14:21:35 -0800136 ,TDLS
137#else
138 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800139#endif
Viral Modi9dc288a2012-12-10 13:09:21 -0800140 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathishd8713192012-12-10 14:21:35 -0800141#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
142 ,WLANACTIVE_OFFLOAD
143#else
144 ,FEATURE_NOT_SUPPORTED
145#endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700146#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
147 ,WLAN_ROAM_SCAN_OFFLOAD
148#else
149 ,FEATURE_NOT_SUPPORTED
150#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800151 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700152
153/*--------------------------------------------------------------------------
154 WLAN DAL State Machine
155 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700156WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700157{
158 /*WDI_INIT_ST*/
159 {{
160 WDI_MainStart, /*WDI_START_EVENT*/
161 NULL, /*WDI_STOP_EVENT*/
162 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
163 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
164 WDI_MainClose, /*WDI_CLOSE_EVENT*/
165 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
166 }},
167
168 /*WDI_STARTED_ST*/
169 {{
170 WDI_MainStartStarted, /*WDI_START_EVENT*/
171 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
172 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
173 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
174 NULL, /*WDI_CLOSE_EVENT*/
175 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
176 }},
177
178 /*WDI_STOPPED_ST*/
179 {{
180 WDI_MainStart, /*WDI_START_EVENT*/
181 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
182 NULL, /*WDI_REQUEST_EVENT*/
183 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
184 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700185 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700186 }},
187
188 /*WDI_BUSY_ST*/
189 {{
190 WDI_MainStartBusy, /*WDI_START_EVENT*/
191 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
192 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
193 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
194 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
195 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
196 }}
197};
198
Jeff Johnsone7245742012-09-05 17:12:55 -0700199/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700200 DAL Request Processing Array - the functions in this table will only be
201 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700202 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700203 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700204WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700205{
206 /*INIT*/
207 WDI_ProcessStartReq, /* WDI_START_REQ */
208 WDI_ProcessStopReq, /* WDI_STOP_REQ */
209 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
210
211 /*SCAN*/
212 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
213 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
214 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
215 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
216
217 /*ASSOCIATION*/
218 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
219 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
220 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
221 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
222 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
223
224 /* Security */
225 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
226 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
227 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
228 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
229
230 /* QoS and BA APIs */
231 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
232 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
233 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
234 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
235 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
236
237 /* Miscellaneous Control APIs */
238 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
239 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
240 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
241 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
242 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
243
244 /*BA APIs*/
245 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
246 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
247
248 /*Beacon processing APIs*/
249 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
250 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
251
252 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
253 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
254 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
255 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700256 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700257 /* PowerSave APIs */
258 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
259 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
260 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
261 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
262 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
263 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
264 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
265 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
266 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
267 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
268 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
269 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
270 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
271 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
272 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
273 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
274 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
275 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
276 /*NV Download APIs*/
277 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
278 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
279 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
280#ifdef WLAN_FEATURE_VOWIFI_11R
281 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
282#else
283 NULL,
284#endif /* WLAN_FEATURE_VOWIFI_11R */
285 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
286 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700287 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700288
289#ifdef FEATURE_OEM_DATA_SUPPORT
290 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
291#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700292 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700293#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700294 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700295
296 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700297
298#ifdef FEATURE_WLAN_SCAN_PNO
299 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
300 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
301 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
302#else
303 NULL,
304 NULL,
305 NULL,
306#endif /* FEATURE_WLAN_SCAN_PNO */
307
308 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700309
Jeff Johnson295189b2012-06-20 16:38:30 -0700310#ifdef WLAN_FEATURE_PACKET_FILTERING
311 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700312 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700313 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700314 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700315 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700316 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700317 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700318 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700319#else
320 NULL,
321 NULL,
322 NULL,
323 NULL,
324#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700325 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700326 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
327 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
328
329 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
330#ifdef FEATURE_WLAN_CCX
331 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
332#else
333 NULL,
334#endif
335
336#ifdef WLAN_FEATURE_GTK_OFFLOAD
337 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
338 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
339#else
340 NULL,
341 NULL,
342#endif // WLAN_FEATURE_GTK_OFFLOAD
343
344 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
345 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700346#ifdef WLAN_FEATURE_11AC
347 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800348#else
349 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700350#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800351#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
352 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
353#else
schangd82195a2013-03-13 18:41:24 -0700354 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800355#endif
schangd82195a2013-03-13 18:41:24 -0700356 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700357#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700358 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700359#else
360 NULL,
361#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
schangd82195a2013-03-13 18:41:24 -0700362 /*-------------------------------------------------------------------------
363 Indications
364 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700365 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800366 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700367#ifdef WLAN_FEATURE_11W
368 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
369#else
370 NULL,
371#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700372};
373
374
Jeff Johnsone7245742012-09-05 17:12:55 -0700375/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700376 DAL Request Processing Array - the functions in this table will only be
377 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700378 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700379 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700380WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700381{
382 /*INIT*/
383 WDI_ProcessStartRsp, /* WDI_START_RESP */
384 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
385 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
386
387 /*SCAN*/
388 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
389 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
390 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
391 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
392
393 /* ASSOCIATION*/
394 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
395 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
396 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
397 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
398 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
399
400 /* Security */
401 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
402 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
403 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
404 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
405
406 /* QoS and BA APIs */
407 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
408 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
409 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
410 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
411 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
412
413 /* Miscellaneous Control APIs */
414 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
415 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
416 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
417 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
418 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
419
420 /* BA APIs*/
421 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
422 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700423
Jeff Johnson295189b2012-06-20 16:38:30 -0700424 /* IBSS APIs*/
425 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
426 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
427
428 /*Soft AP APIs*/
429 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
430 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
431 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
432 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
433
434 /* PowerSave APIs */
435 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
436 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
437 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
438 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
439 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
440 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
441 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
442 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
443 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
444 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
445 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
446 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
447 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
448 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
449 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
450 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
451 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
452 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700453
Jeff Johnson295189b2012-06-20 16:38:30 -0700454
455 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
456
457 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
458 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
459#ifdef WLAN_FEATURE_VOWIFI_11R
460 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
461#else
462 NULL,
463#endif /* WLAN_FEATURE_VOWIFI_11R */
464 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
465 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700466#ifdef FEATURE_OEM_DATA_SUPPORT
467 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
468#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700469 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700470#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700471 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
472
Jeff Johnson295189b2012-06-20 16:38:30 -0700473 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700474
Jeff Johnson295189b2012-06-20 16:38:30 -0700475 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700476
Jeff Johnsone7245742012-09-05 17:12:55 -0700477 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
478
Jeff Johnson295189b2012-06-20 16:38:30 -0700479#ifdef FEATURE_WLAN_SCAN_PNO
480 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
481 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
482 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
483#else
484 NULL,
485 NULL,
486 NULL,
487#endif // FEATURE_WLAN_SCAN_PNO
488
489 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
490
491 /*---------------------------------------------------------------------
492 Indications
493 ---------------------------------------------------------------------*/
494#ifdef WLAN_FEATURE_PACKET_FILTERING
495 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700496 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700497 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700498 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700499 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700500 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700501 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700502 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700503#else
504 NULL,
505 NULL,
506 NULL,
507 NULL,
508#endif // WLAN_FEATURE_PACKET_FILTERING
509
510 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
511 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
512
513 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
514#ifdef FEATURE_WLAN_CCX
515 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
516#else
517 NULL,
518#endif
519
520#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700521 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
522 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700523#else
524 NULL,
525 NULL,
526#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700527 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
528 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700529#ifdef WLAN_FEATURE_11AC
530 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700531#else
532 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700533#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800534#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
535 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
536#else
537 NULL,
538#endif
schangd82195a2013-03-13 18:41:24 -0700539 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700540#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700541 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700542#else
543 NULL,
544#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700545 /*---------------------------------------------------------------------
546 Indications
547 ---------------------------------------------------------------------*/
548 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
549 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
550 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
551 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
552 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
553 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
554
555 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
556
557 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
558
Jeff Johnson295189b2012-06-20 16:38:30 -0700559 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700560
561#ifdef FEATURE_WLAN_SCAN_PNO
562 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
563#else
564 NULL,
565#endif // FEATURE_WLAN_SCAN_PNO
566
567#ifdef WLAN_WAKEUP_EVENTS
568 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
569#else // WLAN_WAKEUP_EVENTS
570 NULL,
571#endif // WLAN_WAKEUP_EVENTS
572
573 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800574
Viral Modi9dc288a2012-12-10 13:09:21 -0800575 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700576};
577
578
Jeff Johnsone7245742012-09-05 17:12:55 -0700579/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700580 WLAN DAL Global Control Block
581 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700582WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700583static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
584
Jeff Johnsone7245742012-09-05 17:12:55 -0700585const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700586
587/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700588WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700589void* WDI_GET_PAL_CTX( void )
590{
Jeff Johnsone7245742012-09-05 17:12:55 -0700591 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700592}/*WDI_GET_PAL_CTX*/
593
Jeff Johnsone7245742012-09-05 17:12:55 -0700594/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700595 Helper inline converters
596 ============================================================================*/
597/*Convert WDI driver type into HAL driver type*/
598WPT_STATIC WPT_INLINE WDI_Status
599WDI_HAL_2_WDI_STATUS
600(
601 eHalStatus halStatus
602);
603
604/*Convert WDI request type into HAL request type*/
605WPT_STATIC WPT_INLINE tHalHostMsgType
606WDI_2_HAL_REQ_TYPE
607(
608 WDI_RequestEnumType wdiReqType
609);
610
611/*Convert WDI response type into HAL response type*/
612WPT_STATIC WPT_INLINE WDI_ResponseEnumType
613HAL_2_WDI_RSP_TYPE
614(
615 tHalHostMsgType halMsg
616);
617
618/*Convert WDI driver type into HAL driver type*/
619WPT_STATIC WPT_INLINE tDriverType
620WDI_2_HAL_DRV_TYPE
621(
622 WDI_DriverType wdiDriverType
623);
624
625/*Convert WDI stop reason into HAL stop reason*/
626WPT_STATIC WPT_INLINE tHalStopType
627WDI_2_HAL_STOP_REASON
628(
629 WDI_StopType wdiStopType
630);
631
632/*Convert WDI scan mode type into HAL scan mode type*/
633WPT_STATIC WPT_INLINE eHalSysMode
634WDI_2_HAL_SCAN_MODE
635(
636 WDI_ScanMode wdiScanMode
637);
638
639/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700640WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700641WDI_2_HAL_SEC_CH_OFFSET
642(
643 WDI_HTSecondaryChannelOffset wdiSecChOffset
644);
645
646/*Convert WDI BSS type into HAL BSS type*/
647WPT_STATIC WPT_INLINE tSirBssType
648WDI_2_HAL_BSS_TYPE
649(
650 WDI_BssType wdiBSSType
651);
652
653/*Convert WDI NW type into HAL NW type*/
654WPT_STATIC WPT_INLINE tSirNwType
655WDI_2_HAL_NW_TYPE
656(
657 WDI_NwType wdiNWType
658);
659
660/*Convert WDI chanel bonding type into HAL cb type*/
661WPT_STATIC WPT_INLINE ePhyChanBondState
662WDI_2_HAL_CB_STATE
663(
664 WDI_PhyChanBondState wdiCbState
665);
666
667/*Convert WDI chanel bonding type into HAL cb type*/
668WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
669WDI_2_HAL_HT_OPER_MODE
670(
671 WDI_HTOperatingMode wdiHTOperMode
672);
673
674/*Convert WDI mimo PS type into HAL mimo PS type*/
675WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
676WDI_2_HAL_MIMO_PS
677(
678 WDI_HTMIMOPowerSaveState wdiHTOperMode
679);
680
681/*Convert WDI ENC type into HAL ENC type*/
682WPT_STATIC WPT_INLINE tAniEdType
683WDI_2_HAL_ENC_TYPE
684(
685 WDI_EncryptType wdiEncType
686);
687
688/*Convert WDI WEP type into HAL WEP type*/
689WPT_STATIC WPT_INLINE tAniWepType
690WDI_2_HAL_WEP_TYPE
691(
692 WDI_WepType wdiWEPType
693);
694
695/*Convert WDI Link State into HAL Link State*/
696WPT_STATIC WPT_INLINE tSirLinkState
697WDI_2_HAL_LINK_STATE
698(
699 WDI_LinkStateType wdiLinkState
700);
701
Jeff Johnsone7245742012-09-05 17:12:55 -0700702/*Translate a STA Context from WDI into HAL*/
703WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700704void
705WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700706(
Jeff Johnson295189b2012-06-20 16:38:30 -0700707 tConfigStaParams* phalConfigSta,
708 WDI_ConfigStaReqInfoType* pwdiConfigSta
709);
Jeff Johnsone7245742012-09-05 17:12:55 -0700710
711/*Translate a Rate set info from WDI into HAL*/
712WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700713WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700714(
Jeff Johnson295189b2012-06-20 16:38:30 -0700715 tSirMacRateSet* pHalRateSet,
716 WDI_RateSet* pwdiRateSet
717);
718
719/*Translate an EDCA Parameter Record from WDI into HAL*/
720WPT_STATIC WPT_INLINE void
721WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700722(
Jeff Johnson295189b2012-06-20 16:38:30 -0700723 tSirMacEdcaParamRecord* phalEdcaParam,
724 WDI_EdcaParamRecord* pWDIEdcaParam
725);
726
727/*Copy a management frame header from WDI fmt into HAL fmt*/
728WPT_STATIC WPT_INLINE void
729WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
730(
731 tSirMacMgmtHdr* pmacMgmtHdr,
732 WDI_MacMgmtHdr* pwdiMacMgmtHdr
733);
734
735/*Copy config bss parameters from WDI fmt into HAL fmt*/
736WPT_STATIC WPT_INLINE void
737WDI_CopyWDIConfigBSSToHALConfigBSS
738(
739 tConfigBssParams* phalConfigBSS,
740 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
741);
742
Jeff Johnsone7245742012-09-05 17:12:55 -0700743/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700744 pointed to by user data */
745WPT_STATIC WPT_INLINE void
746WDI_ExtractRequestCBFromEvent
747(
748 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700749 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700750 void** ppUserData
751);
752
753wpt_uint8
754WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700755(
Jeff Johnson295189b2012-06-20 16:38:30 -0700756 WDI_ControlBlockType* pWDICtx,
757 WDI_BSSSessionType** ppSession
758);
759
760void
761WDI_AddBcastSTAtoSTATable
762(
763 WDI_ControlBlockType* pWDICtx,
764 WDI_AddStaParams * staParams,
765 wpt_uint16 usBcastStaIdx
766);
767
768WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700769(
Jeff Johnson295189b2012-06-20 16:38:30 -0700770 WDI_ControlBlockType* pWDICtx,
771 WDI_EventInfoType* pEventData
772);
773
774void
775WDI_SetPowerStateCb
776(
777 wpt_status status,
778 unsigned int dxePhyAddr,
779 void *pContext
780);
781
782#define CASE_RETURN_STRING( str ) \
783 case ( ( str ) ): return( #str ); break \
784
785/**
786 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700787
788 @param wdiReqMsgId: WDI Message request Id
789
790 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700791 @return Result of the function call
792*/
793static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
794{
795 switch (wdiReqMsgId)
796 {
797 CASE_RETURN_STRING( WDI_START_REQ );
798 CASE_RETURN_STRING( WDI_STOP_REQ );
799 CASE_RETURN_STRING( WDI_CLOSE_REQ );
800 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
801 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
802 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
803 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
804 CASE_RETURN_STRING( WDI_JOIN_REQ );
805 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
806 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
807 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
808 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
809 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
810 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
811 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
812 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
813 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
814 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
815 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
816 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
817 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
818 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
819 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
820 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
821 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
822 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
823 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
824 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
825 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
826 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
827 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
828 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
829 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
830 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
831 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
832 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
833 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
834 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
835 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
836 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
837 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
838 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
839 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
840 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
841 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
842 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
843 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
844 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
845 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
846 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
847 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
848 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
849 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
850 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
851 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
852 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
853 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
854 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
855 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
856 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700857 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700858 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
859 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
860 #ifdef FEATURE_WLAN_SCAN_PNO
861 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
862 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
863 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
864 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700865#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700866 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700867#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700868 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
869 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
870 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
871 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
872 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
873 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
874 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
875 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
876 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800877 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800878 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700879#ifdef WLAN_FEATURE_11W
880 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
881#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700882 default:
883 return "Unknown WDI MessageId";
884 }
885}
886
887
888
889/**
890 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700891
892 @param wdiRespMsgId: WDI Message response Id
893
894 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700895 @return Result of the function call
896*/
897static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
898{
899 switch (wdiRespMsgId)
900 {
901 CASE_RETURN_STRING( WDI_START_RESP );
902 CASE_RETURN_STRING( WDI_STOP_RESP );
903 CASE_RETURN_STRING( WDI_CLOSE_RESP );
904 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
905 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
906 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
907 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
908 CASE_RETURN_STRING( WDI_JOIN_RESP );
909 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
910 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
911 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
912 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
913 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
914 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
915 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
916 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
917 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
918 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
919 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
920 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
921 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
922 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
923 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
924 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
925 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
926 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
927 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
928 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
929 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
930 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
931 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
932 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
933 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
934 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
935 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
936 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
937 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
938 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
939 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
940 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
941 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
942 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
943 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
944 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
945 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
946 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
947 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
948 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
949 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
950 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
951 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
952 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
953 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
954 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
955 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
956 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
957 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
958 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
959 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
960 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700961 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700962 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
963 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
964 #ifdef FEATURE_WLAN_SCAN_PNO
965 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
966 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
967 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
968 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700969#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700970 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700971#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700972 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
973 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
974 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
975 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
976 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
977 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
978 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
979 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800980 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700981 default:
982 return "Unknown WDI MessageId";
983 }
984}
985
986/**
987 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700988
989 @param halStatusId: HAL status Id
990
991 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700992 @return Result of the function call
993*/
994static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
995{
996 switch (halStatusId)
997 {
998 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
999 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1000 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1001 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1002 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1003 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1004 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1005 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1006 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1007 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1008 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1009 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1010 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1011 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1012 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1013 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1014 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1015 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1016 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1017 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1018 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1019 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1020 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1021 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1022 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1023 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1024 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1025 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1026 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1027 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1028 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1029 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1030 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1031 default:
1032 return "Unknown HAL status";
1033 }
1034}
1035
Jeff Johnsone7245742012-09-05 17:12:55 -07001036/*========================================================================
1037
Jeff Johnson295189b2012-06-20 16:38:30 -07001038 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001039
Jeff Johnson295189b2012-06-20 16:38:30 -07001040==========================================================================*/
1041
1042/**
1043 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001044
Jeff Johnson295189b2012-06-20 16:38:30 -07001045 DAL will allocate all the resources it needs. It will open PAL, it will also
1046 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001047 DXE/SMD or any other drivers that they need.
1048
Jeff Johnson295189b2012-06-20 16:38:30 -07001049 @param pOSContext: pointer to the OS context provided by the UMAC
1050 will be passed on to PAL on Open
1051 ppWDIGlobalCtx: output pointer of Global Context
1052 pWdiDevCapability: output pointer of device capability
1053
1054 @return Result of the function call
1055*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001056WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001057WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001058(
Jeff Johnson295189b2012-06-20 16:38:30 -07001059 void* pOSContext,
1060 void** ppWDIGlobalCtx,
1061 WDI_DeviceCapabilityType* pWdiDevCapability,
1062 unsigned int driverType
1063)
1064{
1065 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001066 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001067 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001068 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1070
1071 /*---------------------------------------------------------------------
1072 Sanity check
1073 ---------------------------------------------------------------------*/
1074 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1075 {
1076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1077 "Invalid input parameters in WDI_Init");
1078
Jeff Johnsone7245742012-09-05 17:12:55 -07001079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001080 }
1081
1082 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001083 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001084 ---------------------------------------------------------------------*/
1085 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1086 {
1087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1088 "WDI module already initialized - return");
1089
Jeff Johnsone7245742012-09-05 17:12:55 -07001090 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001091 }
1092
1093 /*Module is now initialized - this flag is to ensure the fact that multiple
1094 init will not happen on WDI
1095 !! - potential race does exist because read and set are not atomic,
1096 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001097 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001098
1099 /*Setup the control block */
1100 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001101 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001102
1103 /*Setup the STA Table*/
1104 wdiStatus = WDI_STATableInit(&gWDICb);
1105 if ( WDI_STATUS_SUCCESS != wdiStatus )
1106 {
1107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1108 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001109 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001110 goto fail_STATableInit;
1111 }
1112
1113 /*------------------------------------------------------------------------
1114 Open the PAL
1115 ------------------------------------------------------------------------*/
1116 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1117 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1118 {
1119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1120 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001121 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001122 goto fail_wpalOpen;
1123 }
1124
1125 /*Initialize main synchro mutex - it will be used to ensure integrity of
1126 the main WDI Control Block*/
1127 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1128 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1129 {
1130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1131 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001132 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001133 goto fail_mutex;
1134 }
1135
1136 /*Initialize the response timer - it will be used to time all messages
1137 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001138 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1139 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001140 &gWDICb);
1141 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1142 {
1143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1144 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001145 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001146 goto fail_timer;
1147 }
1148
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001149 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1150 WDI_SsrTimerCB,
1151 &gWDICb);
1152 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1153 {
1154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1155 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001156 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001157 goto fail_timer2;
1158 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001159 /* Initialize the WDI Pending Request Queue*/
1160 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1161 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1162 {
1163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1164 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001165 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001166 goto fail_pend_queue;
1167 }
1168
1169 /*Init WDI Pending Assoc Id Queue */
1170 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1171 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1172 {
1173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1174 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001175 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001176 goto fail_assoc_queue;
1177 }
1178
1179 /*Initialize the BSS sessions pending Queue */
1180 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1181 {
1182 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1183 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1184 {
1185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1186 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001187 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001188 goto fail_bss_queue;
1189 }
1190 }
1191
1192 /*Indicate the control block is sufficiently initialized for callbacks*/
1193 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1194
1195 /*------------------------------------------------------------------------
1196 Initialize the Data Path Utility Module
1197 ------------------------------------------------------------------------*/
1198 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1199 if ( WDI_STATUS_SUCCESS != wdiStatus )
1200 {
1201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1202 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001203 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001204 goto fail_dp_util_init;
1205 }
1206
1207 /* Init Set power state event */
1208 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001209 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001210 {
1211 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1212 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001213 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001214 goto fail_power_event;
1215 }
1216
1217 /* Init WCTS action event */
1218 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001219 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001220 {
1221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1222 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001223 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001224 goto fail_wcts_event;
1225 }
1226
1227 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001228 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001229 ------------------------------------------------------------------------*/
1230 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1231 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001232 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001233 wctsCBs.wctsRxMsgCBData = &gWDICb;
1234
Jeff Johnsone7245742012-09-05 17:12:55 -07001235 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001236 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001237 WDI_CT_CHANNEL_SIZE,
1238 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001239
1240 if ( NULL == gWDICb.wctsHandle )
1241 {
1242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001243 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001244 goto fail_wcts_open;
1245 }
1246
1247 gWDICb.driverMode = (tDriverType)driverType;
1248 /* FTM mode not need to open Transport Driver */
1249 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001250 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001251 /*------------------------------------------------------------------------
1252 Open the Data Transport
1253 ------------------------------------------------------------------------*/
1254 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1255 {
1256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001257 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001258 goto fail_wdts_open;
1259 }
1260 }
1261
1262 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001263 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001264
1265 /*Send the context as a ptr to the global WDI Control Block*/
1266 *ppWDIGlobalCtx = &gWDICb;
1267
1268 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001269 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001270 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1271 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1272 return WDI_STATUS_SUCCESS;
1273
1274 /* ERROR handlers
1275 Undo everything that completed successfully */
1276
1277 fail_wdts_open:
1278 {
1279 wpt_status eventStatus;
1280
1281 /* Closing WCTS in this scenario is tricky since it has to close
1282 the SMD channel and then we get notified asynchronously when
1283 the channel has been closed. So we take some of the logic from
1284 the "normal" close procedure in WDI_Close()
1285 */
1286
1287 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001288 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001289 {
1290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001291 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001292 }
1293
1294 WCTS_CloseTransport(gWDICb.wctsHandle);
1295
1296 /* Wait for WCTS to close the control transport. If we were able
1297 to reset the event flag, then we'll wait for the event,
1298 otherwise we'll wait for a maximum amount of time required for
1299 the channel to be closed */
1300 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1301 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001302 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001303 WDI_WCTS_ACTION_TIMEOUT);
1304 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1305 {
1306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001307 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001308 }
1309 }
1310 else
1311 {
1312 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1313 }
1314 }
1315 fail_wcts_open:
1316 wpalEventDelete(&gWDICb.wctsActionEvent);
1317 fail_wcts_event:
1318 wpalEventDelete(&gWDICb.setPowerStateEvent);
1319 fail_power_event:
1320 WDI_DP_UtilsExit(&gWDICb);
1321 fail_dp_util_init:
1322 gWDICb.magic = 0;
1323 fail_bss_queue:
1324 /* entries 0 thru i-1 were successfully initialized */
1325 while (0 < i)
1326 {
1327 i--;
1328 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1329 }
1330 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1331 fail_assoc_queue:
1332 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1333 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001334 wpalTimerDelete(&gWDICb.ssrTimer);
1335 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001336 wpalTimerDelete(&gWDICb.wptResponseTimer);
1337 fail_timer:
1338 wpalMutexDelete(&gWDICb.wptMutex);
1339 fail_mutex:
1340 wpalClose(gWDICb.pPALContext);
1341 fail_wpalOpen:
1342 WDI_STATableClose(&gWDICb);
1343 fail_STATableInit:
1344 gWDIInitialized = eWLAN_PAL_FALSE;
1345
1346 return WDI_STATUS_E_FAILURE;
1347
1348}/*WDI_Init*/;
1349
1350/**
1351 @brief WDI_Start will be called when the upper MAC is ready to
1352 commence operation with the WLAN Device. Upon the call
1353 of this API the WLAN DAL will pack and send a HAL Start
1354 message to the lower RIVA sub-system if the SMD channel
1355 has been fully opened and the RIVA subsystem is up.
1356
1357 If the RIVA sub-system is not yet up and running DAL
1358 will queue the request for Open and will wait for the
1359 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001360 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001361
1362 WDI_Init must have been called.
1363
Jeff Johnsone7245742012-09-05 17:12:55 -07001364 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001365 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001366
Jeff Johnson295189b2012-06-20 16:38:30 -07001367 wdiStartRspCb: callback for passing back the response of
1368 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001369
Jeff Johnson295189b2012-06-20 16:38:30 -07001370 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001371 callback
1372
Jeff Johnson295189b2012-06-20 16:38:30 -07001373 @see WDI_Start
1374 @return Result of the function call
1375*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001376WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001377WDI_Start
1378(
1379 WDI_StartReqParamsType* pwdiStartParams,
1380 WDI_StartRspCb wdiStartRspCb,
1381 void* pUserData
1382)
1383{
1384 WDI_EventInfoType wdiEventData;
1385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1386
1387 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001388 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001389 ------------------------------------------------------------------------*/
1390 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1391 {
1392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1393 "WDI API call before module is initialized - Fail request");
1394
Jeff Johnsone7245742012-09-05 17:12:55 -07001395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001396 }
1397
1398 /*------------------------------------------------------------------------
1399 Fill in Event data and post to the Main FSM
1400 ------------------------------------------------------------------------*/
1401 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001402 wdiEventData.pEventData = pwdiStartParams;
1403 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1404 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001405 wdiEventData.pUserData = pUserData;
1406
1407 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1408
1409}/*WDI_Start*/
1410
1411/**
1412 @brief WDI_Stop will be called when the upper MAC is ready to
1413 stop any operation with the WLAN Device. Upon the call
1414 of this API the WLAN DAL will pack and send a HAL Stop
1415 message to the lower RIVA sub-system if the DAL Core is
1416 in started state.
1417
1418 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001419
1420 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001421
1422 WDI_Start must have been called.
1423
Jeff Johnsone7245742012-09-05 17:12:55 -07001424 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001425 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001426
Jeff Johnson295189b2012-06-20 16:38:30 -07001427 wdiStopRspCb: callback for passing back the response of
1428 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001429
Jeff Johnson295189b2012-06-20 16:38:30 -07001430 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001431 callback
1432
Jeff Johnson295189b2012-06-20 16:38:30 -07001433 @see WDI_Start
1434 @return Result of the function call
1435*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001436WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001437WDI_Stop
1438(
1439 WDI_StopReqParamsType* pwdiStopParams,
1440 WDI_StopRspCb wdiStopRspCb,
1441 void* pUserData
1442)
1443{
1444 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001445 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1447
1448 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001449 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001450 ------------------------------------------------------------------------*/
1451 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1452 {
1453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1454 "WDI API call before module is initialized - Fail request");
1455
Jeff Johnsone7245742012-09-05 17:12:55 -07001456 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001457 }
1458
Jeff Johnson43971f52012-07-17 12:26:56 -07001459 /*Access to the global state must be locked before cleaning */
1460 wpalMutexAcquire(&pWDICtx->wptMutex);
1461
1462 /*Clear all pending request*/
1463 WDI_ClearPendingRequests(pWDICtx);
1464
1465 /*We have completed cleaning unlock now*/
1466 wpalMutexRelease(&pWDICtx->wptMutex);
1467
Jeff Johnson295189b2012-06-20 16:38:30 -07001468 /* Free the global variables */
1469 wpalMemoryFree(gpHostWlanFeatCaps);
1470 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001471 gpHostWlanFeatCaps = NULL;
1472 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001473
1474 /*------------------------------------------------------------------------
1475 Fill in Event data and post to the Main FSM
1476 ------------------------------------------------------------------------*/
1477 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001478 wdiEventData.pEventData = pwdiStopParams;
1479 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1480 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001481 wdiEventData.pUserData = pUserData;
1482
1483 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1484
1485}/*WDI_Stop*/
1486
1487
1488
1489/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001490 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001491 needs to interact with DAL. DAL will free its control
1492 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001493
1494 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001495
1496 WDI_Stop must have been called.
1497
1498 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001499
Jeff Johnson295189b2012-06-20 16:38:30 -07001500 @see WDI_Stop
1501 @return Result of the function call
1502*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001503WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001504WDI_Close
1505(
1506 void
1507)
1508{
1509 wpt_uint8 i;
1510 WDI_EventInfoType wdiEventData;
1511 wpt_status wptStatus;
1512 wpt_status eventStatus;
1513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1514
1515 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001516 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001517 ------------------------------------------------------------------------*/
1518 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1519 {
1520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1521 "WDI API call before module is initialized - Fail request");
1522
Jeff Johnsone7245742012-09-05 17:12:55 -07001523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001524 }
1525
1526 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1527 (the control transport will be closed by the FSM and we'll want
1528 to wait until that completes)*/
1529 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001530 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001531 {
1532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001533 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001534 /* fall through and try to finish closing via the FSM */
1535 }
1536
1537 /*------------------------------------------------------------------------
1538 Fill in Event data and post to the Main FSM
1539 ------------------------------------------------------------------------*/
1540 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001541 wdiEventData.pEventData = NULL;
1542 wdiEventData.uEventDataSize = 0;
1543 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001544 wdiEventData.pUserData = NULL;
1545
1546 gWDIInitialized = eWLAN_PAL_FALSE;
1547
1548 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1549
1550 /*Wait for WCTS to close the control transport
1551 (but only if we were able to reset the event flag*/
1552 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1553 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001554 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001555 WDI_WCTS_ACTION_TIMEOUT);
1556 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1557 {
1558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001559 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001560 }
1561 }
1562
1563 /* Destroy the WCTS action event */
1564 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1565 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1566 {
1567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1568 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001569 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001570 }
1571
1572 /* Destroy the Set Power State event */
1573 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1574 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1575 {
1576 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1577 "WDI Close failed to destroy an event");
1578
Jeff Johnsone7245742012-09-05 17:12:55 -07001579 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001580 }
1581
1582 /*------------------------------------------------------------------------
1583 Closes the Data Path Utility Module
1584 ------------------------------------------------------------------------*/
1585 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1586 {
1587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1588 "WDI Init failed to close the DP Util Module");
1589
Jeff Johnsone7245742012-09-05 17:12:55 -07001590 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 }
1592
1593 /*destroy the BSS sessions pending Queue */
1594 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1595 {
1596 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1597 }
1598
1599 /* destroy the WDI Pending Assoc Id Request Queue*/
1600 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1601
1602 /* destroy the WDI Pending Request Queue*/
1603 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001604
Jeff Johnson295189b2012-06-20 16:38:30 -07001605 /*destroy the response timer */
1606 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1607
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001608 /*destroy the SSR timer */
1609 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1610
Jeff Johnson295189b2012-06-20 16:38:30 -07001611 /*invalidate the main synchro mutex */
1612 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1613 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1614 {
1615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1616 "Failed to delete mutex %d", wptStatus);
1617 WDI_ASSERT(0);
1618 }
1619
1620 /*Clear control block. note that this will clear the "magic"
1621 which will inhibit all asynchronous callbacks*/
1622 WDI_CleanCB(&gWDICb);
1623
1624 return wptStatus;
1625
1626}/*WDI_Close*/
1627
1628/**
1629 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1630 This will do most of the WDI stop & close
1631 operations without doing any handshake with Riva
1632
1633 This will also make sure that the control transport
1634 will NOT be closed.
1635
1636 This request will not be queued.
1637
1638
1639 WDI_Start must have been called.
1640
1641 @param closeTransport: Close control channel if this is set
1642
1643 @return Result of the function call
1644*/
1645WDI_Status
1646WDI_Shutdown
1647(
1648 wpt_boolean closeTransport
1649)
1650{
1651 WDI_EventInfoType wdiEventData;
1652 wpt_status wptStatus;
1653 int i = 0;
1654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1655
1656 /*------------------------------------------------------------------------
1657 Sanity Check
1658 ------------------------------------------------------------------------*/
1659 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1660 {
1661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1662 "WDI API call before module is initialized - Fail request");
1663
1664 return WDI_STATUS_E_NOT_ALLOWED;
1665 }
1666
1667 /*------------------------------------------------------------------------
1668 Fill in Event data and post to the Main FSM
1669 ------------------------------------------------------------------------*/
1670 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1671 wdiEventData.pEventData = NULL;
1672 wdiEventData.uEventDataSize = 0;
1673
1674 /* Shutdown will not be queued, if the state is busy timer will be
1675 * stopped & this message will be processed.*/
1676 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1677 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1678 {
1679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001680 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001681 }
1682 /* Destroy the Set Power State event */
1683 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1684 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1685 {
1686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1687 "WDI Close failed to destroy an event");
1688
1689 WDI_ASSERT(0);
1690 }
1691 /*------------------------------------------------------------------------
1692 Closes the Data Path Utility Module
1693 ------------------------------------------------------------------------*/
1694 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1695 {
1696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1697 "WDI Init failed to close the DP Util Module");
1698
1699 WDI_ASSERT(0);
1700 }
1701 if ( closeTransport )
1702 {
1703 /* Close control transport, called from module unload */
1704 WCTS_CloseTransport(gWDICb.wctsHandle);
1705 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001706 else
1707 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001708 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001709 the pending messages in the transport queue */
1710 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1711 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001712 /*destroy the BSS sessions pending Queue */
1713 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1714 {
1715 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1716 }
1717
1718 /* destroy the WDI Pending Assoc Id Request Queue*/
1719 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1720 /* destroy the WDI Pending Request Queue*/
1721 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1722 /*destroy the response timer */
1723 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001724 /*destroy the SSR timer */
1725 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001726
1727 /*invalidate the main synchro mutex */
1728 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1729 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1730 {
1731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001732 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001733 WDI_ASSERT(0);
1734 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001735 /* Free the global variables */
1736 wpalMemoryFree(gpHostWlanFeatCaps);
1737 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001738 gpHostWlanFeatCaps = NULL;
1739 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001740 /*Clear control block. note that this will clear the "magic"
1741 which will inhibit all asynchronous callbacks*/
1742 WDI_CleanCB(&gWDICb);
1743 return wptStatus;
1744
1745}/*WDI_Shutdown*/
1746
1747
Jeff Johnsone7245742012-09-05 17:12:55 -07001748/*========================================================================
1749
Jeff Johnson295189b2012-06-20 16:38:30 -07001750 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001751
Jeff Johnson295189b2012-06-20 16:38:30 -07001752==========================================================================*/
1753
1754/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001755 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001756 the WLAN Device to get ready for a scan procedure. Upon
1757 the call of this API the WLAN DAL will pack and send a
1758 HAL Init Scan request message to the lower RIVA
1759 sub-system if DAL is in state STARTED.
1760
1761 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001762 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001763
1764 WDI_Start must have been called.
1765
1766 @param wdiInitScanParams: the init scan parameters as specified
1767 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001768
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 wdiInitScanRspCb: callback for passing back the response
1770 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001771
Jeff Johnson295189b2012-06-20 16:38:30 -07001772 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001773 callback
1774
Jeff Johnson295189b2012-06-20 16:38:30 -07001775 @see WDI_Start
1776 @return Result of the function call
1777*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001778WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001779WDI_InitScanReq
1780(
1781 WDI_InitScanReqParamsType* pwdiInitScanParams,
1782 WDI_InitScanRspCb wdiInitScanRspCb,
1783 void* pUserData
1784)
1785{
1786 WDI_EventInfoType wdiEventData;
1787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1788
1789 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001790 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001791 ------------------------------------------------------------------------*/
1792 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1793 {
1794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1795 "WDI API call before module is initialized - Fail request");
1796
Jeff Johnsone7245742012-09-05 17:12:55 -07001797 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001798 }
1799
1800 /*------------------------------------------------------------------------
1801 Fill in Event data and post to the Main FSM
1802 ------------------------------------------------------------------------*/
1803 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001804 wdiEventData.pEventData = pwdiInitScanParams;
1805 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1806 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001807 wdiEventData.pUserData = pUserData;
1808
1809 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1810
1811}/*WDI_InitScanReq*/
1812
1813/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001814 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001815 wishes to change the Scan channel on the WLAN Device.
1816 Upon the call of this API the WLAN DAL will pack and
1817 send a HAL Start Scan request message to the lower RIVA
1818 sub-system if DAL is in state STARTED.
1819
1820 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001821 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001822
1823 WDI_InitScanReq must have been called.
1824
Jeff Johnsone7245742012-09-05 17:12:55 -07001825 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001826 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001827
Jeff Johnson295189b2012-06-20 16:38:30 -07001828 wdiStartScanRspCb: callback for passing back the
1829 response of the start scan operation received from the
1830 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001831
Jeff Johnson295189b2012-06-20 16:38:30 -07001832 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001833 callback
1834
Jeff Johnson295189b2012-06-20 16:38:30 -07001835 @see WDI_InitScanReq
1836 @return Result of the function call
1837*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001838WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001839WDI_StartScanReq
1840(
1841 WDI_StartScanReqParamsType* pwdiStartScanParams,
1842 WDI_StartScanRspCb wdiStartScanRspCb,
1843 void* pUserData
1844)
1845{
1846 WDI_EventInfoType wdiEventData;
1847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1848
1849 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001850 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001851 ------------------------------------------------------------------------*/
1852 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1853 {
1854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1855 "WDI API call before module is initialized - Fail request");
1856
Jeff Johnsone7245742012-09-05 17:12:55 -07001857 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001858 }
1859
1860 /*------------------------------------------------------------------------
1861 Fill in Event data and post to the Main FSM
1862 ------------------------------------------------------------------------*/
1863 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001864 wdiEventData.pEventData = pwdiStartScanParams;
1865 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1866 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001867 wdiEventData.pUserData = pUserData;
1868
1869 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1870
1871}/*WDI_StartScanReq*/
1872
1873
1874/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001875 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001876 wants to end scanning for a particular channel that it
1877 had set before by calling Scan Start on the WLAN Device.
1878 Upon the call of this API the WLAN DAL will pack and
1879 send a HAL End Scan request message to the lower RIVA
1880 sub-system if DAL is in state STARTED.
1881
1882 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001883 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001884
1885 WDI_StartScanReq must have been called.
1886
Jeff Johnsone7245742012-09-05 17:12:55 -07001887 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001888 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001889
Jeff Johnson295189b2012-06-20 16:38:30 -07001890 wdiEndScanRspCb: callback for passing back the response
1891 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001892
Jeff Johnson295189b2012-06-20 16:38:30 -07001893 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001894 callback
1895
Jeff Johnson295189b2012-06-20 16:38:30 -07001896 @see WDI_StartScanReq
1897 @return Result of the function call
1898*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001899WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001900WDI_EndScanReq
1901(
1902 WDI_EndScanReqParamsType* pwdiEndScanParams,
1903 WDI_EndScanRspCb wdiEndScanRspCb,
1904 void* pUserData
1905)
1906{
1907 WDI_EventInfoType wdiEventData;
1908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1909
1910 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001911 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 ------------------------------------------------------------------------*/
1913 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1914 {
1915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1916 "WDI API call before module is initialized - Fail request");
1917
Jeff Johnsone7245742012-09-05 17:12:55 -07001918 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001919 }
1920
1921 /*------------------------------------------------------------------------
1922 Fill in Event data and post to the Main FSM
1923 ------------------------------------------------------------------------*/
1924 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001925 wdiEventData.pEventData = pwdiEndScanParams;
1926 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1927 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001928 wdiEventData.pUserData = pUserData;
1929
1930 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1931
1932}/*WDI_EndScanReq*/
1933
1934
1935/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001936 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001937 completed the scan process on the WLAN Device. Upon the
1938 call of this API the WLAN DAL will pack and send a HAL
1939 Finish Scan Request request message to the lower RIVA
1940 sub-system if DAL is in state STARTED.
1941
1942 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001943 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001944
1945 WDI_InitScanReq must have been called.
1946
Jeff Johnsone7245742012-09-05 17:12:55 -07001947 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001948 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001949
Jeff Johnson295189b2012-06-20 16:38:30 -07001950 wdiFinishScanRspCb: callback for passing back the
1951 response of the finish scan operation received from the
1952 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001953
Jeff Johnson295189b2012-06-20 16:38:30 -07001954 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001955 callback
1956
Jeff Johnson295189b2012-06-20 16:38:30 -07001957 @see WDI_InitScanReq
1958 @return Result of the function call
1959*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001960WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001961WDI_FinishScanReq
1962(
1963 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1964 WDI_FinishScanRspCb wdiFinishScanRspCb,
1965 void* pUserData
1966)
1967{
1968 WDI_EventInfoType wdiEventData;
1969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1970
1971 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001972 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001973 ------------------------------------------------------------------------*/
1974 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1975 {
1976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1977 "WDI API call before module is initialized - Fail request");
1978
Jeff Johnsone7245742012-09-05 17:12:55 -07001979 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001980 }
1981
1982 /*------------------------------------------------------------------------
1983 Fill in Event data and post to the Main FSM
1984 ------------------------------------------------------------------------*/
1985 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001986 wdiEventData.pEventData = pwdiFinishScanParams;
1987 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1988 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001989 wdiEventData.pUserData = pUserData;
1990
1991 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1992
1993}/*WDI_FinishScanReq*/
1994
Jeff Johnsone7245742012-09-05 17:12:55 -07001995/*========================================================================
1996
Jeff Johnson295189b2012-06-20 16:38:30 -07001997 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001998
Jeff Johnson295189b2012-06-20 16:38:30 -07001999==========================================================================*/
2000
2001/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002002 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002003 to start an association procedure to a BSS. Upon the
2004 call of this API the WLAN DAL will pack and send a HAL
2005 Join request message to the lower RIVA sub-system if
2006 DAL is in state STARTED.
2007
2008 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002009 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002010
2011 WDI_Start must have been called.
2012
Jeff Johnsone7245742012-09-05 17:12:55 -07002013 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002014 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002015
Jeff Johnson295189b2012-06-20 16:38:30 -07002016 wdiJoinRspCb: callback for passing back the response of
2017 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002018
Jeff Johnson295189b2012-06-20 16:38:30 -07002019 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002020 callback
2021
Jeff Johnson295189b2012-06-20 16:38:30 -07002022 @see WDI_Start
2023 @return Result of the function call
2024*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002025WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002026WDI_JoinReq
2027(
2028 WDI_JoinReqParamsType* pwdiJoinParams,
2029 WDI_JoinRspCb wdiJoinRspCb,
2030 void* pUserData
2031)
2032{
2033 WDI_EventInfoType wdiEventData;
2034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2035
2036 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002037 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002038 ------------------------------------------------------------------------*/
2039 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2040 {
2041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2042 "WDI API call before module is initialized - Fail request");
2043
Jeff Johnsone7245742012-09-05 17:12:55 -07002044 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002045 }
2046
2047 /*------------------------------------------------------------------------
2048 Fill in Event data and post to the Main FSM
2049 ------------------------------------------------------------------------*/
2050 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002051 wdiEventData.pEventData = pwdiJoinParams;
2052 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2053 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 wdiEventData.pUserData = pUserData;
2055
2056 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2057
2058}/*WDI_JoinReq*/
2059
2060/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002061 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002062 wishes to configure the newly acquired or in process of
2063 being acquired BSS to the HW . Upon the call of this API
2064 the WLAN DAL will pack and send a HAL Config BSS request
2065 message to the lower RIVA sub-system if DAL is in state
2066 STARTED.
2067
2068 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002069 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002070
2071 WDI_JoinReq must have been called.
2072
Jeff Johnsone7245742012-09-05 17:12:55 -07002073 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002074 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002075
Jeff Johnson295189b2012-06-20 16:38:30 -07002076 wdiConfigBSSRspCb: callback for passing back the
2077 response of the config BSS operation received from the
2078 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002079
Jeff Johnson295189b2012-06-20 16:38:30 -07002080 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002081 callback
2082
Jeff Johnson295189b2012-06-20 16:38:30 -07002083 @see WDI_JoinReq
2084 @return Result of the function call
2085*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002086WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002087WDI_ConfigBSSReq
2088(
2089 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2090 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2091 void* pUserData
2092)
2093{
2094 WDI_EventInfoType wdiEventData;
2095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2096
2097 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002098 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002099 ------------------------------------------------------------------------*/
2100 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2101 {
2102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2103 "WDI API call before module is initialized - Fail request");
2104
Jeff Johnsone7245742012-09-05 17:12:55 -07002105 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 }
2107
2108 /*------------------------------------------------------------------------
2109 Fill in Event data and post to the Main FSM
2110 ------------------------------------------------------------------------*/
2111 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002112 wdiEventData.pEventData = pwdiConfigBSSParams;
2113 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2114 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002115 wdiEventData.pUserData = pUserData;
2116
2117 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2118
2119}/*WDI_ConfigBSSReq*/
2120
2121/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002122 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 disassociating from the BSS and wishes to notify HW.
2124 Upon the call of this API the WLAN DAL will pack and
2125 send a HAL Del BSS request message to the lower RIVA
2126 sub-system if DAL is in state STARTED.
2127
2128 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002129 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002130
2131 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2132
Jeff Johnsone7245742012-09-05 17:12:55 -07002133 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002134 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002135
Jeff Johnson295189b2012-06-20 16:38:30 -07002136 wdiDelBSSRspCb: callback for passing back the response
2137 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002138
Jeff Johnson295189b2012-06-20 16:38:30 -07002139 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002140 callback
2141
2142 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002143 @return Result of the function call
2144*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002145WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002146WDI_DelBSSReq
2147(
2148 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2149 WDI_DelBSSRspCb wdiDelBSSRspCb,
2150 void* pUserData
2151)
2152{
2153 WDI_EventInfoType wdiEventData;
2154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2155
2156 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002157 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002158 ------------------------------------------------------------------------*/
2159 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2160 {
2161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2162 "WDI API call before module is initialized - Fail request");
2163
Jeff Johnsone7245742012-09-05 17:12:55 -07002164 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002165 }
2166
2167 /*------------------------------------------------------------------------
2168 Fill in Event data and post to the Main FSM
2169 ------------------------------------------------------------------------*/
2170 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002171 wdiEventData.pEventData = pwdiDelBSSParams;
2172 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2173 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002174 wdiEventData.pUserData = pUserData;
2175
2176 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2177
2178}/*WDI_DelBSSReq*/
2179
2180/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002181 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002182 associated to a BSS and wishes to configure HW for
2183 associated state. Upon the call of this API the WLAN DAL
2184 will pack and send a HAL Post Assoc request message to
2185 the lower RIVA sub-system if DAL is in state STARTED.
2186
2187 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002188 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002189
2190 WDI_JoinReq must have been called.
2191
2192 @param wdiPostAssocReqParams: the assoc parameters as specified
2193 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002194
Jeff Johnson295189b2012-06-20 16:38:30 -07002195 wdiPostAssocRspCb: callback for passing back the
2196 response of the post assoc operation received from the
2197 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002198
Jeff Johnson295189b2012-06-20 16:38:30 -07002199 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002200 callback
2201
Jeff Johnson295189b2012-06-20 16:38:30 -07002202 @see WDI_JoinReq
2203 @return Result of the function call
2204*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002205WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002206WDI_PostAssocReq
2207(
2208 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2209 WDI_PostAssocRspCb wdiPostAssocRspCb,
2210 void* pUserData
2211)
2212{
2213 WDI_EventInfoType wdiEventData;
2214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2215
2216 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002217 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002218 ------------------------------------------------------------------------*/
2219 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2220 {
2221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2222 "WDI API call before module is initialized - Fail request");
2223
Jeff Johnsone7245742012-09-05 17:12:55 -07002224 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002225 }
2226
2227 /*------------------------------------------------------------------------
2228 Fill in Event data and post to the Main FSM
2229 ------------------------------------------------------------------------*/
2230 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002231 wdiEventData.pEventData = pwdiPostAssocReqParams;
2232 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2233 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 wdiEventData.pUserData = pUserData;
2235
2236 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2237
2238}/*WDI_PostAssocReq*/
2239
2240/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002241 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002242 association with another STA has ended and the station
2243 must be deleted from HW. Upon the call of this API the
2244 WLAN DAL will pack and send a HAL Del STA request
2245 message to the lower RIVA sub-system if DAL is in state
2246 STARTED.
2247
2248 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002249 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002250
2251 WDI_PostAssocReq must have been called.
2252
Jeff Johnsone7245742012-09-05 17:12:55 -07002253 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002254 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002255
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 wdiDelSTARspCb: callback for passing back the response
2257 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002258
Jeff Johnson295189b2012-06-20 16:38:30 -07002259 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002260 callback
2261
Jeff Johnson295189b2012-06-20 16:38:30 -07002262 @see WDI_PostAssocReq
2263 @return Result of the function call
2264*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002265WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002266WDI_DelSTAReq
2267(
2268 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2269 WDI_DelSTARspCb wdiDelSTARspCb,
2270 void* pUserData
2271)
2272{
2273 WDI_EventInfoType wdiEventData;
2274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2275
2276 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002277 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002278 ------------------------------------------------------------------------*/
2279 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2280 {
2281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2282 "WDI API call before module is initialized - Fail request");
2283
Jeff Johnsone7245742012-09-05 17:12:55 -07002284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002285 }
2286
2287 /*------------------------------------------------------------------------
2288 Fill in Event data and post to the Main FSM
2289 ------------------------------------------------------------------------*/
2290 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002291 wdiEventData.pEventData = pwdiDelSTAParams;
2292 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2293 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002294 wdiEventData.pUserData = pUserData;
2295
2296 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2297
2298}/*WDI_DelSTAReq*/
2299
Jeff Johnsone7245742012-09-05 17:12:55 -07002300/*========================================================================
2301
Jeff Johnson295189b2012-06-20 16:38:30 -07002302 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002303
Jeff Johnson295189b2012-06-20 16:38:30 -07002304==========================================================================*/
2305
2306/**
2307 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2308 install a BSS encryption key on the HW. Upon the call of this
2309 API the WLAN DAL will pack and send a Set BSS Key request
2310 message to the lower RIVA sub-system if DAL is in state
2311 STARTED.
2312
2313 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002314 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002315
2316 WDI_PostAssocReq must have been called.
2317
Jeff Johnsone7245742012-09-05 17:12:55 -07002318 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002319 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002320
Jeff Johnson295189b2012-06-20 16:38:30 -07002321 wdiSetBSSKeyRspCb: callback for passing back the
2322 response of the set BSS Key operation received from the
2323 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002324
Jeff Johnson295189b2012-06-20 16:38:30 -07002325 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002326 callback
2327
Jeff Johnson295189b2012-06-20 16:38:30 -07002328 @see WDI_PostAssocReq
2329 @return Result of the function call
2330*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002331WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002332WDI_SetBSSKeyReq
2333(
2334 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2335 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2336 void* pUserData
2337)
2338{
2339 WDI_EventInfoType wdiEventData;
2340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2341
2342 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002343 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002344 ------------------------------------------------------------------------*/
2345 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2346 {
2347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2348 "WDI API call before module is initialized - Fail request");
2349
Jeff Johnsone7245742012-09-05 17:12:55 -07002350 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 }
2352
2353 /*------------------------------------------------------------------------
2354 Fill in Event data and post to the Main FSM
2355 ------------------------------------------------------------------------*/
2356 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002357 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2358 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2359 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002360 wdiEventData.pUserData = pUserData;
2361
2362 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2363
2364}/*WDI_SetBSSKeyReq*/
2365
2366/**
2367 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2368 uninstall a BSS key from HW. Upon the call of this API the
2369 WLAN DAL will pack and send a HAL Remove BSS Key request
2370 message to the lower RIVA sub-system if DAL is in state
2371 STARTED.
2372
2373 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002374 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002375
2376 WDI_SetBSSKeyReq must have been called.
2377
Jeff Johnsone7245742012-09-05 17:12:55 -07002378 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002379 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002380
Jeff Johnson295189b2012-06-20 16:38:30 -07002381 wdiRemoveBSSKeyRspCb: callback for passing back the
2382 response of the remove BSS key operation received from
2383 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002384
Jeff Johnson295189b2012-06-20 16:38:30 -07002385 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002386 callback
2387
Jeff Johnson295189b2012-06-20 16:38:30 -07002388 @see WDI_SetBSSKeyReq
2389 @return Result of the function call
2390*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002391WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002392WDI_RemoveBSSKeyReq
2393(
2394 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2395 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2396 void* pUserData
2397)
2398{
2399 WDI_EventInfoType wdiEventData;
2400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2401
2402 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002403 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002404 ------------------------------------------------------------------------*/
2405 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2406 {
2407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2408 "WDI API call before module is initialized - Fail request");
2409
Jeff Johnsone7245742012-09-05 17:12:55 -07002410 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002411 }
2412
2413 /*------------------------------------------------------------------------
2414 Fill in Event data and post to the Main FSM
2415 ------------------------------------------------------------------------*/
2416 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002417 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2418 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2419 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002420 wdiEventData.pUserData = pUserData;
2421
2422 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2423
2424}/*WDI_RemoveBSSKeyReq*/
2425
2426
2427/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002428 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002429 ready to install a STA(ast) encryption key in HW. Upon
2430 the call of this API the WLAN DAL will pack and send a
2431 HAL Set STA Key request message to the lower RIVA
2432 sub-system if DAL is in state STARTED.
2433
2434 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002435 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002436
2437 WDI_PostAssocReq must have been called.
2438
Jeff Johnsone7245742012-09-05 17:12:55 -07002439 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002440 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002441
Jeff Johnson295189b2012-06-20 16:38:30 -07002442 wdiSetSTAKeyRspCb: callback for passing back the
2443 response of the set STA key operation received from the
2444 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002445
Jeff Johnson295189b2012-06-20 16:38:30 -07002446 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002447 callback
2448
Jeff Johnson295189b2012-06-20 16:38:30 -07002449 @see WDI_PostAssocReq
2450 @return Result of the function call
2451*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002452WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002453WDI_SetSTAKeyReq
2454(
2455 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2456 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2457 void* pUserData
2458)
2459{
2460 WDI_EventInfoType wdiEventData;
2461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2462
2463 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002464 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 ------------------------------------------------------------------------*/
2466 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2467 {
2468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2469 "WDI API call before module is initialized - Fail request");
2470
Jeff Johnsone7245742012-09-05 17:12:55 -07002471 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 }
2473
2474 /*------------------------------------------------------------------------
2475 Fill in Event data and post to the Main FSM
2476 ------------------------------------------------------------------------*/
2477 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002478 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2479 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2480 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 wdiEventData.pUserData = pUserData;
2482
2483 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2484
2485}/*WDI_SetSTAKeyReq*/
2486
2487
2488/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002489 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002490 wants to uninstall a previously set STA key in HW. Upon
2491 the call of this API the WLAN DAL will pack and send a
2492 HAL Remove STA Key request message to the lower RIVA
2493 sub-system if DAL is in state STARTED.
2494
2495 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002496 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002497
2498 WDI_SetSTAKeyReq must have been called.
2499
Jeff Johnsone7245742012-09-05 17:12:55 -07002500 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002501 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002502
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 wdiRemoveSTAKeyRspCb: callback for passing back the
2504 response of the remove STA key operation received from
2505 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002506
Jeff Johnson295189b2012-06-20 16:38:30 -07002507 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002508 callback
2509
Jeff Johnson295189b2012-06-20 16:38:30 -07002510 @see WDI_SetSTAKeyReq
2511 @return Result of the function call
2512*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002513WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002514WDI_RemoveSTAKeyReq
2515(
2516 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2517 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2518 void* pUserData
2519)
2520{
2521 WDI_EventInfoType wdiEventData;
2522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2523
2524 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002525 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002526 ------------------------------------------------------------------------*/
2527 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2528 {
2529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2530 "WDI API call before module is initialized - Fail request");
2531
Jeff Johnsone7245742012-09-05 17:12:55 -07002532 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 }
2534
2535 /*------------------------------------------------------------------------
2536 Fill in Event data and post to the Main FSM
2537 ------------------------------------------------------------------------*/
2538 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002539 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2540 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2541 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002542 wdiEventData.pUserData = pUserData;
2543
2544 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2545
2546}/*WDI_RemoveSTAKeyReq*/
2547
2548
2549/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002550 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002551 wants to install a STA Bcast encryption key on the HW.
2552 Upon the call of this API the WLAN DAL will pack and
2553 send a HAL Start request message to the lower RIVA
2554 sub-system if DAL is in state STARTED.
2555
2556 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002557 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002558
2559 WDI_PostAssocReq must have been called.
2560
Jeff Johnsone7245742012-09-05 17:12:55 -07002561 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002562 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002563
Jeff Johnson295189b2012-06-20 16:38:30 -07002564 wdiSetSTABcastKeyRspCb: callback for passing back the
2565 response of the set BSS Key operation received from the
2566 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002567
Jeff Johnson295189b2012-06-20 16:38:30 -07002568 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002569 callback
2570
Jeff Johnson295189b2012-06-20 16:38:30 -07002571 @see WDI_PostAssocReq
2572 @return Result of the function call
2573*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002574WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002575WDI_SetSTABcastKeyReq
2576(
2577 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2578 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2579 void* pUserData
2580)
2581
2582{
2583 WDI_EventInfoType wdiEventData;
2584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2585
2586 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002587 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002588 ------------------------------------------------------------------------*/
2589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2590 {
2591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2592 "WDI API call before module is initialized - Fail request");
2593
Jeff Johnsone7245742012-09-05 17:12:55 -07002594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002595 }
2596
2597 /*------------------------------------------------------------------------
2598 Fill in Event data and post to the Main FSM
2599 ------------------------------------------------------------------------*/
2600 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002601 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2602 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2603 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002604 wdiEventData.pUserData = pUserData;
2605
2606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2607
2608}/*WDI_SetSTABcastKeyReq*/
2609
2610/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002611 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002612 MAC wants to uninstall a STA Bcast key from HW. Upon the
2613 call of this API the WLAN DAL will pack and send a HAL
2614 Remove STA Bcast Key request message to the lower RIVA
2615 sub-system if DAL is in state STARTED.
2616
2617 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002618 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002619
2620 WDI_SetSTABcastKeyReq must have been called.
2621
Jeff Johnsone7245742012-09-05 17:12:55 -07002622 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002623 parameters as specified by the Device
2624 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002625
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2627 response of the remove STA Bcast key operation received
2628 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002629
Jeff Johnson295189b2012-06-20 16:38:30 -07002630 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002631 callback
2632
Jeff Johnson295189b2012-06-20 16:38:30 -07002633 @see WDI_SetSTABcastKeyReq
2634 @return Result of the function call
2635*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002636WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002637WDI_RemoveSTABcastKeyReq
2638(
2639 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2640 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2641 void* pUserData
2642)
2643{
2644 WDI_EventInfoType wdiEventData;
2645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2646
2647 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 ------------------------------------------------------------------------*/
2650 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2651 {
2652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2653 "WDI API call before module is initialized - Fail request");
2654
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002656 }
2657
2658 /*------------------------------------------------------------------------
2659 Fill in Event data and post to the Main FSM
2660 ------------------------------------------------------------------------*/
2661 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002662 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2663 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2664 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002665 wdiEventData.pUserData = pUserData;
2666
2667 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2668
2669}/*WDI_RemoveSTABcastKeyReq*/
2670
2671/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002673 MAC wants to set Max Tx Power to HW. Upon the
2674 call of this API the WLAN DAL will pack and send a HAL
2675 Remove STA Bcast Key request message to the lower RIVA
2676 sub-system if DAL is in state STARTED.
2677
2678 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002679 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002680
2681 WDI_SetSTABcastKeyReq must have been called.
2682
Jeff Johnsone7245742012-09-05 17:12:55 -07002683 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002684 parameters as specified by the Device
2685 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002686
Jeff Johnson295189b2012-06-20 16:38:30 -07002687 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2688 response of the remove STA Bcast key operation received
2689 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002690
Jeff Johnson295189b2012-06-20 16:38:30 -07002691 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002692 callback
2693
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 @see WDI_SetMaxTxPowerReq
2695 @return Result of the function call
2696*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002697WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002698WDI_SetMaxTxPowerReq
2699(
2700 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2701 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2702 void* pUserData
2703)
2704{
2705 WDI_EventInfoType wdiEventData;
2706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2707
2708 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002709 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002710 ------------------------------------------------------------------------*/
2711 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2712 {
2713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2714 "WDI API call before module is initialized - Fail request");
2715
Jeff Johnsone7245742012-09-05 17:12:55 -07002716 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 }
2718
2719 /*------------------------------------------------------------------------
2720 Fill in Event data and post to the Main FSM
2721 ------------------------------------------------------------------------*/
2722 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002723 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2724 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2725 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002726 wdiEventData.pUserData = pUserData;
2727
2728 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2729}
2730
schangd82195a2013-03-13 18:41:24 -07002731/**
2732 @brief WDI_SetTxPowerReq will be called when the upper
2733 MAC wants to set Tx Power to HW.
2734 In state BUSY this request will be queued. Request won't
2735 be allowed in any other state.
2736
2737
2738 @param pwdiSetTxPowerParams: set TS Power parameters
2739 BSSID and target TX Power with dbm included
2740
2741 wdiReqStatusCb: callback for passing back the response
2742
2743 pUserData: user data will be passed back with the
2744 callback
2745
2746 @return Result of the function call
2747*/
2748WDI_Status
2749WDI_SetTxPowerReq
2750(
2751 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2752 WDA_SetTxPowerRspCb wdiReqStatusCb,
2753 void* pUserData
2754)
2755{
2756 WDI_EventInfoType wdiEventData;
2757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2758
2759 /*------------------------------------------------------------------------
2760 Sanity Check
2761 ------------------------------------------------------------------------*/
2762 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2763 {
2764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2765 "WDI API call before module is initialized - Fail request");
2766
2767 return WDI_STATUS_E_NOT_ALLOWED;
2768 }
2769
2770 /*------------------------------------------------------------------------
2771 Fill in Event data and post to the Main FSM
2772 ------------------------------------------------------------------------*/
2773 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2774 wdiEventData.pEventData = pwdiSetTxPowerParams;
2775 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2776 wdiEventData.pCBfnc = wdiReqStatusCb;
2777 wdiEventData.pUserData = pUserData;
2778
2779 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2780}
2781
Jeff Johnson295189b2012-06-20 16:38:30 -07002782#ifdef FEATURE_WLAN_CCX
2783WDI_Status
2784WDI_TSMStatsReq
2785(
2786 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2787 WDI_TsmRspCb wdiReqStatusCb,
2788 void* pUserData
2789)
2790{
2791 WDI_EventInfoType wdiEventData;
2792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002793 /*------------------------------------------------------------------------
2794 Sanity Check
2795 ------------------------------------------------------------------------*/
2796 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2797 {
2798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2799 "WDI API call before module is initialized - Fail request");
2800
2801 return WDI_STATUS_E_NOT_ALLOWED;
2802 }
2803
2804 /*------------------------------------------------------------------------
2805 Fill in Event data and post to the Main FSM
2806 ------------------------------------------------------------------------*/
2807 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2808 wdiEventData.pEventData = pwdiTsmReqParams;
2809 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2810 wdiEventData.pCBfnc = wdiReqStatusCb;
2811 wdiEventData.pUserData = pUserData;
2812
2813 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2814
2815}
2816#endif
2817
2818/*========================================================================
2819
2820 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002821
Jeff Johnson295189b2012-06-20 16:38:30 -07002822==========================================================================*/
2823
2824/**
2825 @brief WDI_AddTSReq will be called when the upper MAC to inform
2826 the device of a successful add TSpec negotiation. HW
2827 needs to receive the TSpec Info from the UMAC in order
2828 to configure properly the QoS data traffic. Upon the
2829 call of this API the WLAN DAL will pack and send a HAL
2830 Add TS request message to the lower RIVA sub-system if
2831 DAL is in state STARTED.
2832
2833 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002834 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002835
2836 WDI_PostAssocReq must have been called.
2837
2838 @param wdiAddTsReqParams: the add TS parameters as specified by
2839 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002840
Jeff Johnson295189b2012-06-20 16:38:30 -07002841 wdiAddTsRspCb: callback for passing back the response of
2842 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002843
Jeff Johnson295189b2012-06-20 16:38:30 -07002844 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002845 callback
2846
Jeff Johnson295189b2012-06-20 16:38:30 -07002847 @see WDI_PostAssocReq
2848 @return Result of the function call
2849*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002850WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002851WDI_AddTSReq
2852(
2853 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2854 WDI_AddTsRspCb wdiAddTsRspCb,
2855 void* pUserData
2856)
2857{
2858 WDI_EventInfoType wdiEventData;
2859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2860
2861 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002862 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002863 ------------------------------------------------------------------------*/
2864 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2865 {
2866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2867 "WDI API call before module is initialized - Fail request");
2868
Jeff Johnsone7245742012-09-05 17:12:55 -07002869 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 }
2871
2872 /*------------------------------------------------------------------------
2873 Fill in Event data and post to the Main FSM
2874 ------------------------------------------------------------------------*/
2875 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002876 wdiEventData.pEventData = pwdiAddTsReqParams;
2877 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2878 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002879 wdiEventData.pUserData = pUserData;
2880
2881 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2882
2883}/*WDI_AddTSReq*/
2884
2885
2886
2887/**
2888 @brief WDI_DelTSReq will be called when the upper MAC has ended
2889 admission on a specific AC. This is to inform HW that
2890 QoS traffic parameters must be rest. Upon the call of
2891 this API the WLAN DAL will pack and send a HAL Del TS
2892 request message to the lower RIVA sub-system if DAL is
2893 in state STARTED.
2894
2895 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002896 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002897
2898 WDI_AddTSReq must have been called.
2899
2900 @param wdiDelTsReqParams: the del TS parameters as specified by
2901 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002902
Jeff Johnson295189b2012-06-20 16:38:30 -07002903 wdiDelTsRspCb: callback for passing back the response of
2904 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002905
Jeff Johnson295189b2012-06-20 16:38:30 -07002906 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002907 callback
2908
Jeff Johnson295189b2012-06-20 16:38:30 -07002909 @see WDI_AddTSReq
2910 @return Result of the function call
2911*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002912WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002913WDI_DelTSReq
2914(
2915 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2916 WDI_DelTsRspCb wdiDelTsRspCb,
2917 void* pUserData
2918)
2919{
2920 WDI_EventInfoType wdiEventData;
2921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2922
2923 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002924 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002925 ------------------------------------------------------------------------*/
2926 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2927 {
2928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2929 "WDI API call before module is initialized - Fail request");
2930
Jeff Johnsone7245742012-09-05 17:12:55 -07002931 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002932 }
2933
2934 /*------------------------------------------------------------------------
2935 Fill in Event data and post to the Main FSM
2936 ------------------------------------------------------------------------*/
2937 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002938 wdiEventData.pEventData = pwdiDelTsReqParams;
2939 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2940 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002941 wdiEventData.pUserData = pUserData;
2942
2943 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2944
2945}/*WDI_DelTSReq*/
2946
2947
2948
2949/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002950 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002951 wishes to update the EDCA parameters used by HW for QoS
2952 data traffic. Upon the call of this API the WLAN DAL
2953 will pack and send a HAL Update EDCA Params request
2954 message to the lower RIVA sub-system if DAL is in state
2955 STARTED.
2956
2957 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002958 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002959
2960 WDI_PostAssocReq must have been called.
2961
Jeff Johnsone7245742012-09-05 17:12:55 -07002962 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002963 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002964
Jeff Johnson295189b2012-06-20 16:38:30 -07002965 wdiUpdateEDCAParamsRspCb: callback for passing back the
2966 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002967
Jeff Johnson295189b2012-06-20 16:38:30 -07002968 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002969 callback
2970
Jeff Johnson295189b2012-06-20 16:38:30 -07002971 @see WDI_PostAssocReq
2972 @return Result of the function call
2973*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002974WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002975WDI_UpdateEDCAParams
2976(
2977 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2978 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2979 void* pUserData
2980)
2981{
2982 WDI_EventInfoType wdiEventData;
2983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2984
2985 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002986 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002987 ------------------------------------------------------------------------*/
2988 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2989 {
2990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2991 "WDI API call before module is initialized - Fail request");
2992
Jeff Johnsone7245742012-09-05 17:12:55 -07002993 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002994 }
2995
2996 /*------------------------------------------------------------------------
2997 Fill in Event data and post to the Main FSM
2998 ------------------------------------------------------------------------*/
2999 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003000 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3001 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3002 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003003 wdiEventData.pUserData = pUserData;
3004
3005 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3006
3007}/*WDI_UpdateEDCAParams*/
3008
3009
3010/**
3011 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3012 successfully a BA session and needs to notify the HW for
3013 the appropriate settings to take place. Upon the call of
3014 this API the WLAN DAL will pack and send a HAL Add BA
3015 request message to the lower RIVA sub-system if DAL is
3016 in state STARTED.
3017
3018 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003019 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003020
3021 WDI_PostAssocReq must have been called.
3022
3023 @param wdiAddBAReqParams: the add BA parameters as specified by
3024 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003025
Jeff Johnson295189b2012-06-20 16:38:30 -07003026 wdiAddBARspCb: callback for passing back the response of
3027 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003028
Jeff Johnson295189b2012-06-20 16:38:30 -07003029 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003030 callback
3031
Jeff Johnson295189b2012-06-20 16:38:30 -07003032 @see WDI_PostAssocReq
3033 @return Result of the function call
3034*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003035WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003036WDI_AddBASessionReq
3037(
3038 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3039 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3040 void* pUserData
3041)
3042{
3043 WDI_EventInfoType wdiEventData;
3044 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3045
3046 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003047 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003048 ------------------------------------------------------------------------*/
3049 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3050 {
3051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3052 "WDI API call before module is initialized - Fail request");
3053
Jeff Johnsone7245742012-09-05 17:12:55 -07003054 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003055 }
3056
3057 /*------------------------------------------------------------------------
3058 Fill in Event data and post to the Main FSM
3059 ------------------------------------------------------------------------*/
3060 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003061 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3062 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3063 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003064 wdiEventData.pUserData = pUserData;
3065
3066 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3067
3068}/*WDI_AddBASessionReq*/
3069
3070/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003071 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003072 inform HW that it has deleted a previously created BA
3073 session. Upon the call of this API the WLAN DAL will
3074 pack and send a HAL Del BA request message to the lower
3075 RIVA sub-system if DAL is in state STARTED.
3076
3077 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003078 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003079
3080 WDI_AddBAReq must have been called.
3081
3082 @param wdiDelBAReqParams: the del BA parameters as specified by
3083 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003084
Jeff Johnson295189b2012-06-20 16:38:30 -07003085 wdiDelBARspCb: callback for passing back the response of
3086 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003087
Jeff Johnson295189b2012-06-20 16:38:30 -07003088 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003089 callback
3090
Jeff Johnson295189b2012-06-20 16:38:30 -07003091 @see WDI_AddBAReq
3092 @return Result of the function call
3093*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003094WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003095WDI_DelBAReq
3096(
3097 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3098 WDI_DelBARspCb wdiDelBARspCb,
3099 void* pUserData
3100)
3101{
3102 WDI_EventInfoType wdiEventData;
3103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3104
3105 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003106 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003107 ------------------------------------------------------------------------*/
3108 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3109 {
3110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3111 "WDI API call before module is initialized - Fail request");
3112
Jeff Johnsone7245742012-09-05 17:12:55 -07003113 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003114 }
3115
3116 /*------------------------------------------------------------------------
3117 Fill in Event data and post to the Main FSM
3118 ------------------------------------------------------------------------*/
3119 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003120 wdiEventData.pEventData = pwdiDelBAReqParams;
3121 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3122 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003123 wdiEventData.pUserData = pUserData;
3124
3125 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3126
3127}/*WDI_DelBAReq*/
3128
Jeff Johnsone7245742012-09-05 17:12:55 -07003129/*========================================================================
3130
Jeff Johnson295189b2012-06-20 16:38:30 -07003131 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003132
Jeff Johnson295189b2012-06-20 16:38:30 -07003133==========================================================================*/
3134
3135/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003136 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003137 wants to set the power save related configurations of
3138 the WLAN Device. Upon the call of this API the WLAN DAL
3139 will pack and send a HAL Update CFG request message to
3140 the lower RIVA sub-system if DAL is in state STARTED.
3141
3142 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003143 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003144
3145 WDI_Start must have been called.
3146
Jeff Johnsone7245742012-09-05 17:12:55 -07003147 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003148 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003149
Jeff Johnson295189b2012-06-20 16:38:30 -07003150 wdiSetPwrSaveCfgCb: callback for passing back the
3151 response of the set power save cfg operation received
3152 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003153
Jeff Johnson295189b2012-06-20 16:38:30 -07003154 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003155 callback
3156
Jeff Johnson295189b2012-06-20 16:38:30 -07003157 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003158 @return Result of the function call
3159*/
3160WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003161WDI_SetPwrSaveCfgReq
3162(
3163 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3164 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3165 void* pUserData
3166)
3167{
3168 WDI_EventInfoType wdiEventData;
3169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3170
3171 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003172 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003173 ------------------------------------------------------------------------*/
3174 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3175 {
3176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3177 "WDI API call before module is initialized - Fail request");
3178
Jeff Johnsone7245742012-09-05 17:12:55 -07003179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003180 }
3181
3182 /*------------------------------------------------------------------------
3183 Fill in Event data and post to the Main FSM
3184 ------------------------------------------------------------------------*/
3185 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003186 wdiEventData.pEventData = pwdiPowerSaveCfg;
3187 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3188 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003189 wdiEventData.pUserData = pUserData;
3190
3191 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3192
3193}/*WDI_SetPwrSaveCfgReq*/
3194
3195/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003196 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003197 request the device to get into IMPS power state. Upon
3198 the call of this API the WLAN DAL will send a HAL Enter
3199 IMPS request message to the lower RIVA sub-system if DAL
3200 is in state STARTED.
3201
3202 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003203 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003204
Jeff Johnsone7245742012-09-05 17:12:55 -07003205
3206 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003207 response of the Enter IMPS operation received from the
3208 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003209
Jeff Johnson295189b2012-06-20 16:38:30 -07003210 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003211 callback
3212
Jeff Johnson295189b2012-06-20 16:38:30 -07003213 @see WDI_Start
3214 @return Result of the function call
3215*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003216WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003217WDI_EnterImpsReq
3218(
3219 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3220 void* pUserData
3221)
3222{
3223 WDI_EventInfoType wdiEventData;
3224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3225
3226 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003227 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 ------------------------------------------------------------------------*/
3229 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3230 {
3231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3232 "WDI API call before module is initialized - Fail request");
3233
Jeff Johnsone7245742012-09-05 17:12:55 -07003234 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 }
3236
3237 /*------------------------------------------------------------------------
3238 Fill in Event data and post to the Main FSM
3239 ------------------------------------------------------------------------*/
3240 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003241 wdiEventData.pEventData = NULL;
3242 wdiEventData.uEventDataSize = 0;
3243 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003244 wdiEventData.pUserData = pUserData;
3245
3246 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3247
3248}/*WDI_EnterImpsReq*/
3249
3250/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003251 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003252 request the device to get out of IMPS power state. Upon
3253 the call of this API the WLAN DAL will send a HAL Exit
3254 IMPS request message to the lower RIVA sub-system if DAL
3255 is in state STARTED.
3256
3257 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003258 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003259
Jeff Johnson295189b2012-06-20 16:38:30 -07003260
Jeff Johnsone7245742012-09-05 17:12:55 -07003261
3262 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003263 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003264
Jeff Johnson295189b2012-06-20 16:38:30 -07003265 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003266 callback
3267
Jeff Johnson295189b2012-06-20 16:38:30 -07003268 @see WDI_Start
3269 @return Result of the function call
3270*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003271WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003272WDI_ExitImpsReq
3273(
3274 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3275 void* pUserData
3276)
3277{
3278 WDI_EventInfoType wdiEventData;
3279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3280
3281 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003282 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003283 ------------------------------------------------------------------------*/
3284 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3285 {
3286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3287 "WDI API call before module is initialized - Fail request");
3288
Jeff Johnsone7245742012-09-05 17:12:55 -07003289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003290 }
3291
3292 /*------------------------------------------------------------------------
3293 Fill in Event data and post to the Main FSM
3294 ------------------------------------------------------------------------*/
3295 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003296 wdiEventData.pEventData = NULL;
3297 wdiEventData.uEventDataSize = 0;
3298 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003299 wdiEventData.pUserData = pUserData;
3300
3301 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3302
3303}/*WDI_ExitImpsReq*/
3304
3305/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003306 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 request the device to get into BMPS power state. Upon
3308 the call of this API the WLAN DAL will pack and send a
3309 HAL Enter BMPS request message to the lower RIVA
3310 sub-system if DAL is in state STARTED.
3311
3312 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003313 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003314
3315 WDI_PostAssocReq must have been called.
3316
Jeff Johnsone7245742012-09-05 17:12:55 -07003317 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003318 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003319
Jeff Johnson295189b2012-06-20 16:38:30 -07003320 wdiEnterBmpsRspCb: callback for passing back the
3321 response of the Enter BMPS operation received from the
3322 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003323
Jeff Johnson295189b2012-06-20 16:38:30 -07003324 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003325 callback
3326
Jeff Johnson295189b2012-06-20 16:38:30 -07003327 @see WDI_PostAssocReq
3328 @return Result of the function call
3329*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003330WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003331WDI_EnterBmpsReq
3332(
3333 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3334 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3335 void* pUserData
3336)
3337{
3338 WDI_EventInfoType wdiEventData;
3339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3340
3341 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003342 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003343 ------------------------------------------------------------------------*/
3344 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3345 {
3346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3347 "WDI API call before module is initialized - Fail request");
3348
Jeff Johnsone7245742012-09-05 17:12:55 -07003349 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003350 }
3351
3352 /*------------------------------------------------------------------------
3353 Fill in Event data and post to the Main FSM
3354 ------------------------------------------------------------------------*/
3355 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003356 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3357 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3358 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003359 wdiEventData.pUserData = pUserData;
3360
3361 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3362
3363}/*WDI_EnterBmpsReq*/
3364
3365/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003366 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003367 request the device to get out of BMPS power state. Upon
3368 the call of this API the WLAN DAL will pack and send a
3369 HAL Exit BMPS request message to the lower RIVA
3370 sub-system if DAL is in state STARTED.
3371
3372 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003373 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003374
3375 WDI_PostAssocReq must have been called.
3376
Jeff Johnsone7245742012-09-05 17:12:55 -07003377 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003378 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003379
Jeff Johnson295189b2012-06-20 16:38:30 -07003380 wdiExitBmpsRspCb: callback for passing back the response
3381 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003382
Jeff Johnson295189b2012-06-20 16:38:30 -07003383 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003384 callback
3385
Jeff Johnson295189b2012-06-20 16:38:30 -07003386 @see WDI_PostAssocReq
3387 @return Result of the function call
3388*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003389WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003390WDI_ExitBmpsReq
3391(
3392 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3393 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3394 void* pUserData
3395)
3396{
3397 WDI_EventInfoType wdiEventData;
3398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3399
3400 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003401 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003402 ------------------------------------------------------------------------*/
3403 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3404 {
3405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3406 "WDI API call before module is initialized - Fail request");
3407
Jeff Johnsone7245742012-09-05 17:12:55 -07003408 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003409 }
3410
3411 /*------------------------------------------------------------------------
3412 Fill in Event data and post to the Main FSM
3413 ------------------------------------------------------------------------*/
3414 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003415 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3416 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3417 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003418 wdiEventData.pUserData = pUserData;
3419
3420 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3421
3422}/*WDI_ExitBmpsReq*/
3423
3424/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003425 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003426 request the device to get into UAPSD power state. Upon
3427 the call of this API the WLAN DAL will pack and send a
3428 HAL Enter UAPSD request message to the lower RIVA
3429 sub-system if DAL is in state STARTED.
3430
3431 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003432 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003433
3434 WDI_PostAssocReq must have been called.
3435 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003436
3437 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003438 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003439
Jeff Johnson295189b2012-06-20 16:38:30 -07003440 wdiEnterUapsdRspCb: callback for passing back the
3441 response of the Enter UAPSD operation received from the
3442 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003443
Jeff Johnson295189b2012-06-20 16:38:30 -07003444 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003445 callback
3446
Jeff Johnson295189b2012-06-20 16:38:30 -07003447 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3448 @return Result of the function call
3449*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003450WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003451WDI_EnterUapsdReq
3452(
3453 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3454 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3455 void* pUserData
3456)
3457{
3458 WDI_EventInfoType wdiEventData;
3459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3460
3461 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003462 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003463 ------------------------------------------------------------------------*/
3464 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3465 {
3466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3467 "WDI API call before module is initialized - Fail request");
3468
Jeff Johnsone7245742012-09-05 17:12:55 -07003469 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 }
3471
3472 /*------------------------------------------------------------------------
3473 Fill in Event data and post to the Main FSM
3474 ------------------------------------------------------------------------*/
3475 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003476 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3477 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3478 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003479 wdiEventData.pUserData = pUserData;
3480
3481 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3482
3483}/*WDI_EnterUapsdReq*/
3484
3485/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003486 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003487 request the device to get out of UAPSD power state. Upon
3488 the call of this API the WLAN DAL will send a HAL Exit
3489 UAPSD request message to the lower RIVA sub-system if
3490 DAL is in state STARTED.
3491
3492 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003493 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003494
3495 WDI_PostAssocReq must have been called.
3496
Jeff Johnsone7245742012-09-05 17:12:55 -07003497 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003498 response of the Exit UAPSD operation received from the
3499 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003500
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003502 callback
3503
Jeff Johnson295189b2012-06-20 16:38:30 -07003504 @see WDI_PostAssocReq
3505 @return Result of the function call
3506*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003507WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003508WDI_ExitUapsdReq
3509(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003510 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003511 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3512 void* pUserData
3513)
3514{
3515 WDI_EventInfoType wdiEventData;
3516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3517
3518 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003519 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003520 ------------------------------------------------------------------------*/
3521 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3522 {
3523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3524 "WDI API call before module is initialized - Fail request");
3525
Jeff Johnsone7245742012-09-05 17:12:55 -07003526 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003527 }
3528
3529 /*------------------------------------------------------------------------
3530 Fill in Event data and post to the Main FSM
3531 ------------------------------------------------------------------------*/
3532 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003533 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3534 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003535 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 wdiEventData.pUserData = pUserData;
3537
3538 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3539
3540}/*WDI_ExitUapsdReq*/
3541
3542/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003543 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003544 MAC wants to set the UAPSD related configurations
3545 of an associated STA (while acting as an AP) to the WLAN
3546 Device. Upon the call of this API the WLAN DAL will pack
3547 and send a HAL Update UAPSD params request message to
3548 the lower RIVA sub-system if DAL is in state STARTED.
3549
3550 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003551 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003552
3553 WDI_ConfigBSSReq must have been called.
3554
Jeff Johnsone7245742012-09-05 17:12:55 -07003555 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003556 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003557
Jeff Johnson295189b2012-06-20 16:38:30 -07003558 wdiUpdateUapsdParamsCb: callback for passing back the
3559 response of the update UAPSD params operation received
3560 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003561
Jeff Johnson295189b2012-06-20 16:38:30 -07003562 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003563 callback
3564
Jeff Johnson295189b2012-06-20 16:38:30 -07003565 @see WDI_ConfigBSSReq
3566 @return Result of the function call
3567*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003568WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003569WDI_UpdateUapsdParamsReq
3570(
3571 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3572 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3573 void* pUserData
3574)
3575{
3576 WDI_EventInfoType wdiEventData;
3577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3578
3579 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003580 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003581 ------------------------------------------------------------------------*/
3582 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3583 {
3584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3585 "WDI API call before module is initialized - Fail request");
3586
Jeff Johnsone7245742012-09-05 17:12:55 -07003587 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003588 }
3589
3590 /*------------------------------------------------------------------------
3591 Fill in Event data and post to the Main FSM
3592 ------------------------------------------------------------------------*/
3593 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003594 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003595 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003596 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003597 wdiEventData.pUserData = pUserData;
3598
3599 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3600
3601}/*WDI_UpdateUapsdParamsReq*/
3602
3603/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003604 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 MAC wants to set the UAPSD related configurations before
3606 requesting for enter UAPSD power state to the WLAN
3607 Device. Upon the call of this API the WLAN DAL will pack
3608 and send a HAL Set UAPSD params request message to
3609 the lower RIVA sub-system if DAL is in state STARTED.
3610
3611 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003612 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003613
3614 WDI_PostAssocReq must have been called.
3615
3616 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3617 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003618
Jeff Johnson295189b2012-06-20 16:38:30 -07003619 wdiSetUapsdAcParamsCb: callback for passing back the
3620 response of the set UAPSD params operation received from
3621 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003622
Jeff Johnson295189b2012-06-20 16:38:30 -07003623 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003624 callback
3625
Jeff Johnson295189b2012-06-20 16:38:30 -07003626 @see WDI_PostAssocReq
3627 @return Result of the function call
3628*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003629WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003630WDI_SetUapsdAcParamsReq
3631(
3632 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3633 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3634 void* pUserData
3635)
3636{
3637 WDI_EventInfoType wdiEventData;
3638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3639
3640 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003641 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003642 ------------------------------------------------------------------------*/
3643 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3644 {
3645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3646 "WDI API call before module is initialized - Fail request");
3647
Jeff Johnsone7245742012-09-05 17:12:55 -07003648 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003649 }
3650
3651 /*------------------------------------------------------------------------
3652 Fill in Event data and post to the Main FSM
3653 ------------------------------------------------------------------------*/
3654 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003655 wdiEventData.pEventData = pwdiUapsdInfo;
3656 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3657 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 wdiEventData.pUserData = pUserData;
3659
3660 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3661
3662}/*WDI_SetUapsdAcParamsReq*/
3663
3664/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003665 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 MAC wants to set/reset the RXP filters for received pkts
3667 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3668 and send a HAL configure RXP filter request message to
3669 the lower RIVA sub-system.
3670
3671 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003673
Jeff Johnsone7245742012-09-05 17:12:55 -07003674
3675 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003676 filter as specified by the Device
3677 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003678
Jeff Johnson295189b2012-06-20 16:38:30 -07003679 wdiConfigureRxpFilterCb: callback for passing back the
3680 response of the configure RXP filter operation received
3681 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003682
Jeff Johnson295189b2012-06-20 16:38:30 -07003683 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003684 callback
3685
Jeff Johnson295189b2012-06-20 16:38:30 -07003686 @return Result of the function call
3687*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003688WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003689WDI_ConfigureRxpFilterReq
3690(
3691 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3692 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3693 void* pUserData
3694)
3695{
3696 WDI_EventInfoType wdiEventData;
3697 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3698
3699 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003700 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 ------------------------------------------------------------------------*/
3702 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3703 {
3704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3705 "WDI API call before module is initialized - Fail request");
3706
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003708 }
3709
3710 /*------------------------------------------------------------------------
3711 Fill in Event data and post to the Main FSM
3712 ------------------------------------------------------------------------*/
3713 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003714 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3715 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3716 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 wdiEventData.pUserData = pUserData;
3718
3719 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3720}/*WDI_ConfigureRxpFilterReq*/
3721
3722/**
3723 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3724 wants to set the beacon filters while in power save.
3725 Upon the call of this API the WLAN DAL will pack and
3726 send a Beacon filter request message to the
3727 lower RIVA sub-system.
3728
3729 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003730 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003731
Jeff Johnsone7245742012-09-05 17:12:55 -07003732
3733 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003734 filter as specified by the Device
3735 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003736
Jeff Johnson295189b2012-06-20 16:38:30 -07003737 wdiBeaconFilterCb: callback for passing back the
3738 response of the set beacon filter operation received
3739 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003740
Jeff Johnson295189b2012-06-20 16:38:30 -07003741 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003742 callback
3743
Jeff Johnson295189b2012-06-20 16:38:30 -07003744 @return Result of the function call
3745*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003746WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003747WDI_SetBeaconFilterReq
3748(
3749 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3750 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3751 void* pUserData
3752)
3753{
3754 WDI_EventInfoType wdiEventData;
3755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3756
3757 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003758 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 ------------------------------------------------------------------------*/
3760 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3761 {
3762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3763 "WDI API call before module is initialized - Fail request");
3764
Jeff Johnsone7245742012-09-05 17:12:55 -07003765 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003766 }
3767
3768 /*------------------------------------------------------------------------
3769 Fill in Event data and post to the Main FSM
3770 ------------------------------------------------------------------------*/
3771 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003772 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003773 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003774 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003775 wdiEventData.pUserData = pUserData;
3776
3777 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3778}/*WDI_SetBeaconFilterReq*/
3779
3780/**
3781 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3782 wants to remove the beacon filter for particular IE
3783 while in power save. Upon the call of this API the WLAN
3784 DAL will pack and send a remove Beacon filter request
3785 message to the lower RIVA sub-system.
3786
3787 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003789
Jeff Johnsone7245742012-09-05 17:12:55 -07003790
3791 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003792 filter as specified by the Device
3793 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003794
Jeff Johnson295189b2012-06-20 16:38:30 -07003795 wdiBeaconFilterCb: callback for passing back the
3796 response of the remove beacon filter operation received
3797 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003798
Jeff Johnson295189b2012-06-20 16:38:30 -07003799 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003800 callback
3801
Jeff Johnson295189b2012-06-20 16:38:30 -07003802 @return Result of the function call
3803*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003804WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003805WDI_RemBeaconFilterReq
3806(
3807 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3808 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3809 void* pUserData
3810)
3811{
3812 WDI_EventInfoType wdiEventData;
3813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3814
3815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003816 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003817 ------------------------------------------------------------------------*/
3818 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3819 {
3820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3821 "WDI API call before module is initialized - Fail request");
3822
Jeff Johnsone7245742012-09-05 17:12:55 -07003823 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 }
3825
3826 /*------------------------------------------------------------------------
3827 Fill in Event data and post to the Main FSM
3828 ------------------------------------------------------------------------*/
3829 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003830 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003831 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003832 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 wdiEventData.pUserData = pUserData;
3834
3835 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3836}/*WDI_RemBeaconFilterReq*/
3837
3838/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003839 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003840 MAC wants to set the RSSI thresholds related
3841 configurations while in power save. Upon the call of
3842 this API the WLAN DAL will pack and send a HAL Set RSSI
3843 thresholds request message to the lower RIVA
3844 sub-system if DAL is in state STARTED.
3845
3846 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003847 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003848
3849 WDI_PostAssocReq must have been called.
3850
3851 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3852 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003853
Jeff Johnson295189b2012-06-20 16:38:30 -07003854 wdiSetUapsdAcParamsCb: callback for passing back the
3855 response of the set UAPSD params operation received from
3856 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003857
Jeff Johnson295189b2012-06-20 16:38:30 -07003858 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003859 callback
3860
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 @see WDI_PostAssocReq
3862 @return Result of the function call
3863*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003864WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003865WDI_SetRSSIThresholdsReq
3866(
3867 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3868 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3869 void* pUserData
3870)
3871{
3872 WDI_EventInfoType wdiEventData;
3873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3874
3875 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003876 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003877 ------------------------------------------------------------------------*/
3878 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3879 {
3880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3881 "WDI API call before module is initialized - Fail request");
3882
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003884 }
3885
3886 /*------------------------------------------------------------------------
3887 Fill in Event data and post to the Main FSM
3888 ------------------------------------------------------------------------*/
3889 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003890 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003891 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003892 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 wdiEventData.pUserData = pUserData;
3894
3895 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3896}/* WDI_SetRSSIThresholdsReq*/
3897
3898/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003899 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003900 wants to set the filter to minimize unnecessary host
3901 wakeup due to broadcast traffic while in power save.
3902 Upon the call of this API the WLAN DAL will pack and
3903 send a HAL host offload request message to the
3904 lower RIVA sub-system if DAL is in state STARTED.
3905
3906 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003907 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003908
3909 WDI_PostAssocReq must have been called.
3910
Jeff Johnsone7245742012-09-05 17:12:55 -07003911 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003912 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003913
Jeff Johnson295189b2012-06-20 16:38:30 -07003914 wdiHostOffloadCb: callback for passing back the response
3915 of the host offload operation received from the
3916 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003917
Jeff Johnson295189b2012-06-20 16:38:30 -07003918 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003919 callback
3920
Jeff Johnson295189b2012-06-20 16:38:30 -07003921 @see WDI_PostAssocReq
3922 @return Result of the function call
3923*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003924WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003925WDI_HostOffloadReq
3926(
3927 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3928 WDI_HostOffloadCb wdiHostOffloadCb,
3929 void* pUserData
3930)
3931{
3932 WDI_EventInfoType wdiEventData;
3933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3934
3935 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003936 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003937 ------------------------------------------------------------------------*/
3938 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3939 {
3940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3941 "WDI API call before module is initialized - Fail request");
3942
Jeff Johnsone7245742012-09-05 17:12:55 -07003943 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 }
3945
3946 /*------------------------------------------------------------------------
3947 Fill in Event data and post to the Main FSM
3948 ------------------------------------------------------------------------*/
3949 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003950 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003951 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003952 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 wdiEventData.pUserData = pUserData;
3954
3955 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3956}/*WDI_HostOffloadReq*/
3957
3958/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003959 @brief WDI_KeepAliveReq will be called when the upper MAC
3960 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003961 and minimize unnecessary host wakeups due to while in power save.
3962 Upon the call of this API the WLAN DAL will pack and
3963 send a HAL Keep Alive request message to the
3964 lower RIVA sub-system if DAL is in state STARTED.
3965
3966 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003967 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003968
3969 WDI_PostAssocReq must have been called.
3970
Jeff Johnsone7245742012-09-05 17:12:55 -07003971 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003972 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003973
Jeff Johnson295189b2012-06-20 16:38:30 -07003974 wdiKeepAliveCb: callback for passing back the response
3975 of the Keep Alive operation received from the
3976 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003977
Jeff Johnson295189b2012-06-20 16:38:30 -07003978 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003979 callback
3980
Jeff Johnson295189b2012-06-20 16:38:30 -07003981 @see WDI_PostAssocReq
3982 @return Result of the function call
3983*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003984WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003985WDI_KeepAliveReq
3986(
3987 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3988 WDI_KeepAliveCb wdiKeepAliveCb,
3989 void* pUserData
3990)
3991{
3992 WDI_EventInfoType wdiEventData;
3993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3994
3995 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003996 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003997 ------------------------------------------------------------------------*/
3998 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3999 {
4000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4001 "WDI_KeepAliveReq: WDI API call before module "
4002 "is initialized - Fail request");
4003
Jeff Johnsone7245742012-09-05 17:12:55 -07004004 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004005 }
4006
4007 /*------------------------------------------------------------------------
4008 Fill in Event data and post to the Main FSM
4009 ------------------------------------------------------------------------*/
4010 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004011 wdiEventData.pEventData = pwdiKeepAliveParams;
4012 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4013 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004014 wdiEventData.pUserData = pUserData;
4015
4016 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4017}/*WDI_KeepAliveReq*/
4018
4019/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004020 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 wants to set the Wowl Bcast ptrn to minimize unnecessary
4022 host wakeup due to broadcast traffic while in power
4023 save. Upon the call of this API the WLAN DAL will pack
4024 and send a HAL Wowl Bcast ptrn request message to the
4025 lower RIVA sub-system if DAL is in state STARTED.
4026
4027 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004029
4030 WDI_PostAssocReq must have been called.
4031
Jeff Johnsone7245742012-09-05 17:12:55 -07004032 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004033 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004034
Jeff Johnson295189b2012-06-20 16:38:30 -07004035 wdiWowlAddBcPtrnCb: callback for passing back the
4036 response of the add Wowl bcast ptrn operation received
4037 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004038
Jeff Johnson295189b2012-06-20 16:38:30 -07004039 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004040 callback
4041
Jeff Johnson295189b2012-06-20 16:38:30 -07004042 @see WDI_PostAssocReq
4043 @return Result of the function call
4044*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004045WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004046WDI_WowlAddBcPtrnReq
4047(
4048 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4049 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4050 void* pUserData
4051)
4052{
4053 WDI_EventInfoType wdiEventData;
4054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4055
4056 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004057 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004058 ------------------------------------------------------------------------*/
4059 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4060 {
4061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4062 "WDI API call before module is initialized - Fail request");
4063
Jeff Johnsone7245742012-09-05 17:12:55 -07004064 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004065 }
4066
4067 /*------------------------------------------------------------------------
4068 Fill in Event data and post to the Main FSM
4069 ------------------------------------------------------------------------*/
4070 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004071 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004072 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004073 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004074 wdiEventData.pUserData = pUserData;
4075
4076 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4077}/*WDI_WowlAddBcPtrnReq*/
4078
4079/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004080 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004081 wants to clear the Wowl Bcast ptrn. Upon the call of
4082 this API the WLAN DAL will pack and send a HAL delete
4083 Wowl Bcast ptrn request message to the lower RIVA
4084 sub-system if DAL is in state STARTED.
4085
4086 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004087 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004088
4089 WDI_WowlAddBcPtrnReq must have been called.
4090
Jeff Johnsone7245742012-09-05 17:12:55 -07004091 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004092 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004093
Jeff Johnson295189b2012-06-20 16:38:30 -07004094 wdiWowlDelBcPtrnCb: callback for passing back the
4095 response of the del Wowl bcast ptrn operation received
4096 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004097
Jeff Johnson295189b2012-06-20 16:38:30 -07004098 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004099 callback
4100
Jeff Johnson295189b2012-06-20 16:38:30 -07004101 @see WDI_WowlAddBcPtrnReq
4102 @return Result of the function call
4103*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004104WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004105WDI_WowlDelBcPtrnReq
4106(
4107 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4108 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4109 void* pUserData
4110)
4111{
4112 WDI_EventInfoType wdiEventData;
4113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4114
4115 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004116 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004117 ------------------------------------------------------------------------*/
4118 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4119 {
4120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4121 "WDI API call before module is initialized - Fail request");
4122
Jeff Johnsone7245742012-09-05 17:12:55 -07004123 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 }
4125
4126 /*------------------------------------------------------------------------
4127 Fill in Event data and post to the Main FSM
4128 ------------------------------------------------------------------------*/
4129 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004130 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004131 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004132 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004133 wdiEventData.pUserData = pUserData;
4134
4135 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4136}/*WDI_WowlDelBcPtrnReq*/
4137
4138/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004139 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004140 wants to enter the Wowl state to minimize unnecessary
4141 host wakeup while in power save. Upon the call of this
4142 API the WLAN DAL will pack and send a HAL Wowl enter
4143 request message to the lower RIVA sub-system if DAL is
4144 in state STARTED.
4145
4146 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004147 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004148
4149 WDI_PostAssocReq must have been called.
4150
Jeff Johnsone7245742012-09-05 17:12:55 -07004151 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004152 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004153
Jeff Johnson295189b2012-06-20 16:38:30 -07004154 wdiWowlEnterReqCb: callback for passing back the
4155 response of the enter Wowl operation received from the
4156 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004157
Jeff Johnson295189b2012-06-20 16:38:30 -07004158 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004159 callback
4160
Jeff Johnson295189b2012-06-20 16:38:30 -07004161 @see WDI_PostAssocReq
4162 @return Result of the function call
4163*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004164WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004165WDI_WowlEnterReq
4166(
4167 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4168 WDI_WowlEnterReqCb wdiWowlEnterCb,
4169 void* pUserData
4170)
4171{
4172 WDI_EventInfoType wdiEventData;
4173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4174
4175 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004176 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 ------------------------------------------------------------------------*/
4178 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4179 {
4180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4181 "WDI API call before module is initialized - Fail request");
4182
Jeff Johnsone7245742012-09-05 17:12:55 -07004183 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004184 }
4185
4186 /*------------------------------------------------------------------------
4187 Fill in Event data and post to the Main FSM
4188 ------------------------------------------------------------------------*/
4189 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004190 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004191 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004192 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004193 wdiEventData.pUserData = pUserData;
4194
4195 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4196}/*WDI_WowlEnterReq*/
4197
4198/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004199 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004200 wants to exit the Wowl state. Upon the call of this API
4201 the WLAN DAL will pack and send a HAL Wowl exit request
4202 message to the lower RIVA sub-system if DAL is in state
4203 STARTED.
4204
4205 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004207
4208 WDI_WowlEnterReq must have been called.
4209
Jeff Johnsone7245742012-09-05 17:12:55 -07004210 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004211 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004212
Jeff Johnson295189b2012-06-20 16:38:30 -07004213 wdiWowlExitReqCb: callback for passing back the response
4214 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004215
Jeff Johnson295189b2012-06-20 16:38:30 -07004216 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 callback
4218
Jeff Johnson295189b2012-06-20 16:38:30 -07004219 @see WDI_WowlEnterReq
4220 @return Result of the function call
4221*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004222WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004223WDI_WowlExitReq
4224(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004225 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004226 WDI_WowlExitReqCb wdiWowlExitCb,
4227 void* pUserData
4228)
4229{
4230 WDI_EventInfoType wdiEventData;
4231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4232
4233 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004234 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004235 ------------------------------------------------------------------------*/
4236 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4237 {
4238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4239 "WDI API call before module is initialized - Fail request");
4240
Jeff Johnsone7245742012-09-05 17:12:55 -07004241 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004242 }
4243
4244 /*------------------------------------------------------------------------
4245 Fill in Event data and post to the Main FSM
4246 ------------------------------------------------------------------------*/
4247 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004248 wdiEventData.pEventData = pwdiWowlExitParams;
4249 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004250 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004251 wdiEventData.pUserData = pUserData;
4252
4253 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4254}/*WDI_WowlExitReq*/
4255
4256/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004257 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004258 the upper MAC wants to dynamically adjusts the listen
4259 interval based on the WLAN/MSM activity. Upon the call
4260 of this API the WLAN DAL will pack and send a HAL
4261 configure Apps Cpu Wakeup State request message to the
4262 lower RIVA sub-system.
4263
4264 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004265 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004266
Jeff Johnsone7245742012-09-05 17:12:55 -07004267
4268 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004269 Apps Cpu Wakeup State as specified by the
4270 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004271
Jeff Johnson295189b2012-06-20 16:38:30 -07004272 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4273 back the response of the configure Apps Cpu Wakeup State
4274 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004275
Jeff Johnson295189b2012-06-20 16:38:30 -07004276 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004277 callback
4278
Jeff Johnson295189b2012-06-20 16:38:30 -07004279 @return Result of the function call
4280*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004281WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004282WDI_ConfigureAppsCpuWakeupStateReq
4283(
4284 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4285 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4286 void* pUserData
4287)
4288{
4289 WDI_EventInfoType wdiEventData;
4290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4291
4292 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004293 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004294 ------------------------------------------------------------------------*/
4295 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4296 {
4297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4298 "WDI API call before module is initialized - Fail request");
4299
Jeff Johnsone7245742012-09-05 17:12:55 -07004300 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 }
4302
4303 /*------------------------------------------------------------------------
4304 Fill in Event data and post to the Main FSM
4305 ------------------------------------------------------------------------*/
4306 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004307 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4308 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4309 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004310 wdiEventData.pUserData = pUserData;
4311
4312 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4313}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4314/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004315 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004316 to to perform a flush operation on a given AC. Upon the
4317 call of this API the WLAN DAL will pack and send a HAL
4318 Flush AC request message to the lower RIVA sub-system if
4319 DAL is in state STARTED.
4320
4321 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004322 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004323
4324 WDI_AddBAReq must have been called.
4325
Jeff Johnsone7245742012-09-05 17:12:55 -07004326 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004327 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004328
Jeff Johnson295189b2012-06-20 16:38:30 -07004329 wdiFlushAcRspCb: callback for passing back the response
4330 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004331
Jeff Johnson295189b2012-06-20 16:38:30 -07004332 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004333 callback
4334
Jeff Johnson295189b2012-06-20 16:38:30 -07004335 @see WDI_AddBAReq
4336 @return Result of the function call
4337*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004338WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004339WDI_FlushAcReq
4340(
4341 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4342 WDI_FlushAcRspCb wdiFlushAcRspCb,
4343 void* pUserData
4344)
4345{
4346 WDI_EventInfoType wdiEventData;
4347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4348
4349 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004350 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004351 ------------------------------------------------------------------------*/
4352 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4353 {
4354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4355 "WDI API call before module is initialized - Fail request");
4356
Jeff Johnsone7245742012-09-05 17:12:55 -07004357 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004358 }
4359
4360 /*------------------------------------------------------------------------
4361 Fill in Event data and post to the Main FSM
4362 ------------------------------------------------------------------------*/
4363 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004364 wdiEventData.pEventData = pwdiFlushAcReqParams;
4365 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4366 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004367 wdiEventData.pUserData = pUserData;
4368
4369 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4370
4371}/*WDI_FlushAcReq*/
4372
4373/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004374 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004375 wants to notify the lower mac on a BT AMP event. This is
4376 to inform BTC-SLM that some BT AMP event occurred. Upon
4377 the call of this API the WLAN DAL will pack and send a
4378 HAL BT AMP event request message to the lower RIVA
4379 sub-system if DAL is in state STARTED.
4380
4381 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004382 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004383
Jeff Johnsone7245742012-09-05 17:12:55 -07004384
4385 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004387
Jeff Johnson295189b2012-06-20 16:38:30 -07004388 wdiBtAmpEventRspCb: callback for passing back the
4389 response of the BT AMP event operation received from the
4390 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004391
Jeff Johnson295189b2012-06-20 16:38:30 -07004392 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004393 callback
4394
Jeff Johnson295189b2012-06-20 16:38:30 -07004395 @return Result of the function call
4396*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004397WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004398WDI_BtAmpEventReq
4399(
4400 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4401 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4402 void* pUserData
4403)
4404{
4405 WDI_EventInfoType wdiEventData;
4406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4407
4408 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004409 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004410 ------------------------------------------------------------------------*/
4411 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4412 {
4413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4414 "WDI API call before module is initialized - Fail request");
4415
Jeff Johnsone7245742012-09-05 17:12:55 -07004416 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004417 }
4418
4419 /*------------------------------------------------------------------------
4420 Fill in Event data and post to the Main FSM
4421 ------------------------------------------------------------------------*/
4422 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004423 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4424 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4425 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004426 wdiEventData.pUserData = pUserData;
4427
4428 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4429
4430}/*WDI_BtAmpEventReq*/
4431
Jeff Johnsone7245742012-09-05 17:12:55 -07004432#ifdef FEATURE_OEM_DATA_SUPPORT
4433/**
4434 @brief WDI_Start Oem Data Req will be called when the upper MAC
4435 wants to notify the lower mac on a oem data Req event.Upon
4436 the call of this API the WLAN DAL will pack and send a
4437 HAL OEM Data Req event request message to the lower RIVA
4438 sub-system if DAL is in state STARTED.
4439
4440 In state BUSY this request will be queued. Request won't
4441 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004442
4443
Jeff Johnsone7245742012-09-05 17:12:55 -07004444
4445 @param pwdiOemDataReqParams: the Oem Data Req as
4446 specified by the Device Interface
4447
4448 wdiStartOemDataRspCb: callback for passing back the
4449 response of the Oem Data Req received from the
4450 device
4451
4452 pUserData: user data will be passed back with the
4453 callback
4454
4455 @return Result of the function call
4456*/
4457WDI_Status
4458WDI_StartOemDataReq
4459(
4460 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4461 WDI_oemDataRspCb wdiOemDataRspCb,
4462 void* pUserData
4463)
4464{
4465 WDI_EventInfoType wdiEventData;
4466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4467
4468 /*------------------------------------------------------------------------
4469 Sanity Check
4470 ------------------------------------------------------------------------*/
4471 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4472 {
4473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4474 "WDI API call before module is initialized - Fail request");
4475
4476 return WDI_STATUS_E_NOT_ALLOWED;
4477 }
4478
4479 /*------------------------------------------------------------------------
4480 Fill in Event data and post to the Main FSM
4481 ------------------------------------------------------------------------*/
4482 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4483 wdiEventData.pEventData = pwdiOemDataReqParams;
4484 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4485 wdiEventData.pCBfnc = wdiOemDataRspCb;
4486 wdiEventData.pUserData = pUserData;
4487
4488 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4489
4490
4491}
4492
4493#endif
4494
4495
4496/*========================================================================
4497
Jeff Johnson295189b2012-06-20 16:38:30 -07004498 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004499
Jeff Johnson295189b2012-06-20 16:38:30 -07004500==========================================================================*/
4501/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004502 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004503 the WLAN HW to change the current channel of operation.
4504 Upon the call of this API the WLAN DAL will pack and
4505 send a HAL Start request message to the lower RIVA
4506 sub-system if DAL is in state STARTED.
4507
4508 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004509 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004510
4511 WDI_Start must have been called.
4512
Jeff Johnsone7245742012-09-05 17:12:55 -07004513 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004514 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004515
Jeff Johnson295189b2012-06-20 16:38:30 -07004516 wdiSwitchChRspCb: callback for passing back the response
4517 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004518
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004520 callback
4521
Jeff Johnson295189b2012-06-20 16:38:30 -07004522 @see WDI_Start
4523 @return Result of the function call
4524*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004525WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004526WDI_SwitchChReq
4527(
4528 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4529 WDI_SwitchChRspCb wdiSwitchChRspCb,
4530 void* pUserData
4531)
4532{
4533 WDI_EventInfoType wdiEventData;
4534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4535
4536 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004537 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 ------------------------------------------------------------------------*/
4539 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4540 {
4541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4542 "WDI API call before module is initialized - Fail request");
4543
Jeff Johnsone7245742012-09-05 17:12:55 -07004544 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004545 }
4546
4547 /*------------------------------------------------------------------------
4548 Fill in Event data and post to the Main FSM
4549 ------------------------------------------------------------------------*/
4550 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004551 wdiEventData.pEventData = pwdiSwitchChReqParams;
4552 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4553 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004554 wdiEventData.pUserData = pUserData;
4555
4556 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4557
4558}/*WDI_SwitchChReq*/
4559
4560
4561/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004562 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004563 wishes to add or update a STA in HW. Upon the call of
4564 this API the WLAN DAL will pack and send a HAL Start
4565 message request message to the lower RIVA sub-system if
4566 DAL is in state STARTED.
4567
4568 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004569 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004570
4571 WDI_Start must have been called.
4572
Jeff Johnsone7245742012-09-05 17:12:55 -07004573 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004574 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004575
Jeff Johnson295189b2012-06-20 16:38:30 -07004576 wdiConfigSTARspCb: callback for passing back the
4577 response of the config STA operation received from the
4578 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004579
Jeff Johnson295189b2012-06-20 16:38:30 -07004580 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004581 callback
4582
Jeff Johnson295189b2012-06-20 16:38:30 -07004583 @see WDI_Start
4584 @return Result of the function call
4585*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004586WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004587WDI_ConfigSTAReq
4588(
4589 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4590 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4591 void* pUserData
4592)
4593{
4594 WDI_EventInfoType wdiEventData;
4595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4596
4597 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004598 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004599 ------------------------------------------------------------------------*/
4600 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4601 {
4602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4603 "WDI API call before module is initialized - Fail request");
4604
Jeff Johnsone7245742012-09-05 17:12:55 -07004605 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004606 }
4607
4608 /*------------------------------------------------------------------------
4609 Fill in Event data and post to the Main FSM
4610 ------------------------------------------------------------------------*/
4611 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4613 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4614 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004615 wdiEventData.pUserData = pUserData;
4616
4617 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4618
4619}/*WDI_ConfigSTAReq*/
4620
4621/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004622 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004623 wants to change the state of an ongoing link. Upon the
4624 call of this API the WLAN DAL will pack and send a HAL
4625 Start message request message to the lower RIVA
4626 sub-system if DAL is in state STARTED.
4627
4628 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004629 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004630
4631 WDI_JoinStartReq must have been called.
4632
Jeff Johnsone7245742012-09-05 17:12:55 -07004633 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004634 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004635
Jeff Johnson295189b2012-06-20 16:38:30 -07004636 wdiSetLinkStateRspCb: callback for passing back the
4637 response of the set link state operation received from
4638 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004639
Jeff Johnson295189b2012-06-20 16:38:30 -07004640 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004641 callback
4642
Jeff Johnson295189b2012-06-20 16:38:30 -07004643 @see WDI_JoinStartReq
4644 @return Result of the function call
4645*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004646WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004647WDI_SetLinkStateReq
4648(
4649 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4650 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4651 void* pUserData
4652)
4653{
4654 WDI_EventInfoType wdiEventData;
4655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4656
4657 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004658 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004659 ------------------------------------------------------------------------*/
4660 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4661 {
4662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4663 "WDI API call before module is initialized - Fail request");
4664
Jeff Johnsone7245742012-09-05 17:12:55 -07004665 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004666 }
4667
4668 /*------------------------------------------------------------------------
4669 Fill in Event data and post to the Main FSM
4670 ------------------------------------------------------------------------*/
4671 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004672 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4673 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4674 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004675 wdiEventData.pUserData = pUserData;
4676
4677 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4678
4679}/*WDI_SetLinkStateReq*/
4680
4681
4682/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004683 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004684 to get statistics (MIB counters) from the device. Upon
4685 the call of this API the WLAN DAL will pack and send a
4686 HAL Start request message to the lower RIVA sub-system
4687 if DAL is in state STARTED.
4688
4689 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004690 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004691
4692 WDI_Start must have been called.
4693
Jeff Johnsone7245742012-09-05 17:12:55 -07004694 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004695 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004696
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 wdiGetStatsRspCb: callback for passing back the response
4698 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004699
Jeff Johnson295189b2012-06-20 16:38:30 -07004700 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004701 callback
4702
Jeff Johnson295189b2012-06-20 16:38:30 -07004703 @see WDI_Start
4704 @return Result of the function call
4705*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004706WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004707WDI_GetStatsReq
4708(
4709 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4710 WDI_GetStatsRspCb wdiGetStatsRspCb,
4711 void* pUserData
4712)
4713{
4714 WDI_EventInfoType wdiEventData;
4715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4716
4717 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004718 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004719 ------------------------------------------------------------------------*/
4720 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4721 {
4722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4723 "WDI API call before module is initialized - Fail request");
4724
Jeff Johnsone7245742012-09-05 17:12:55 -07004725 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004726 }
4727
4728 /*------------------------------------------------------------------------
4729 Fill in Event data and post to the Main FSM
4730 ------------------------------------------------------------------------*/
4731 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004732 wdiEventData.pEventData = pwdiGetStatsReqParams;
4733 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4734 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004735 wdiEventData.pUserData = pUserData;
4736
4737 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4738
4739}/*WDI_GetStatsReq*/
4740
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004741#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4742/**
4743 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4744 to get roam rssi from the device. Upon
4745 the call of this API the WLAN DAL will pack and send a
4746 HAL Start request message to the lower RIVA sub-system
4747 if DAL is in state STARTED.
4748
4749 In state BUSY this request will be queued. Request won't
4750 be allowed in any other state.
4751
4752 WDI_Start must have been called.
4753
4754 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4755 specified by the Device Interface
4756
4757 wdiGetRoamRssiRspCb: callback for passing back the response
4758 of the get stats operation received from the device
4759
4760 pUserData: user data will be passed back with the
4761 callback
4762
4763 @see WDI_Start
4764 @return Result of the function call
4765*/
4766WDI_Status
4767WDI_GetRoamRssiReq
4768(
4769 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4770 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4771 void* pUserData
4772)
4773{
4774 WDI_EventInfoType wdiEventData;
4775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4776
4777 /*------------------------------------------------------------------------
4778 Sanity Check
4779 ------------------------------------------------------------------------*/
4780 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4781 {
4782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4783 "WDI API call before module is initialized - Fail request");
4784
4785 return WDI_STATUS_E_NOT_ALLOWED;
4786 }
4787 /*------------------------------------------------------------------------
4788 Fill in Event data and post to the Main FSM
4789 ------------------------------------------------------------------------*/
4790 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4791 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4792 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4793 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4794 wdiEventData.pUserData = pUserData;
4795
4796 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4797
4798}/*WDI_GetRoamRssiReq*/
4799#endif
4800
Jeff Johnson295189b2012-06-20 16:38:30 -07004801
4802/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004803 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004804 it wishes to change the configuration of the WLAN
4805 Device. Upon the call of this API the WLAN DAL will pack
4806 and send a HAL Update CFG request message to the lower
4807 RIVA sub-system if DAL is in state STARTED.
4808
4809 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004810 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004811
4812 WDI_Start must have been called.
4813
Jeff Johnsone7245742012-09-05 17:12:55 -07004814 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004815 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004816
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 wdiUpdateCfgsRspCb: callback for passing back the
4818 response of the update cfg operation received from the
4819 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004820
Jeff Johnson295189b2012-06-20 16:38:30 -07004821 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004822 callback
4823
Jeff Johnson295189b2012-06-20 16:38:30 -07004824 @see WDI_Start
4825 @return Result of the function call
4826*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004827WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004828WDI_UpdateCfgReq
4829(
4830 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4831 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4832 void* pUserData
4833)
4834{
4835 WDI_EventInfoType wdiEventData;
4836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4837
4838 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004839 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004840 ------------------------------------------------------------------------*/
4841 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4842 {
4843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4844 "WDI API call before module is initialized - Fail request");
4845
Jeff Johnsone7245742012-09-05 17:12:55 -07004846 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004847 }
4848
4849 /*------------------------------------------------------------------------
4850 Fill in Event data and post to the Main FSM
4851 ------------------------------------------------------------------------*/
4852 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004853 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4854 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4855 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 wdiEventData.pUserData = pUserData;
4857
4858 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4859
4860}/*WDI_UpdateCfgReq*/
4861
4862
4863
4864/**
4865 @brief WDI_AddBAReq will be called when the upper MAC has setup
4866 successfully a BA session and needs to notify the HW for
4867 the appropriate settings to take place. Upon the call of
4868 this API the WLAN DAL will pack and send a HAL Add BA
4869 request message to the lower RIVA sub-system if DAL is
4870 in state STARTED.
4871
4872 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004873 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004874
4875 WDI_PostAssocReq must have been called.
4876
4877 @param wdiAddBAReqParams: the add BA parameters as specified by
4878 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004879
Jeff Johnson295189b2012-06-20 16:38:30 -07004880 wdiAddBARspCb: callback for passing back the response of
4881 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004882
Jeff Johnson295189b2012-06-20 16:38:30 -07004883 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004884 callback
4885
Jeff Johnson295189b2012-06-20 16:38:30 -07004886 @see WDI_PostAssocReq
4887 @return Result of the function call
4888*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004889WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004890WDI_AddBAReq
4891(
4892 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4893 WDI_AddBARspCb wdiAddBARspCb,
4894 void* pUserData
4895)
4896{
4897 WDI_EventInfoType wdiEventData;
4898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4899
4900 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004901 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004902 ------------------------------------------------------------------------*/
4903 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4904 {
4905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4906 "WDI API call before module is initialized - Fail request");
4907
Jeff Johnsone7245742012-09-05 17:12:55 -07004908 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004909 }
4910
4911 /*------------------------------------------------------------------------
4912 Fill in Event data and post to the Main FSM
4913 ------------------------------------------------------------------------*/
4914 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004915 wdiEventData.pEventData = pwdiAddBAReqParams;
4916 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4917 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004918 wdiEventData.pUserData = pUserData;
4919
4920 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4921
4922}/*WDI_AddBAReq*/
4923
4924
4925/**
4926 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4927 successfully a BA session and needs to notify the HW for
4928 the appropriate settings to take place. Upon the call of
4929 this API the WLAN DAL will pack and send a HAL Add BA
4930 request message to the lower RIVA sub-system if DAL is
4931 in state STARTED.
4932
4933 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004934 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004935
4936 WDI_PostAssocReq must have been called.
4937
4938 @param wdiAddBAReqParams: the add BA parameters as specified by
4939 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004940
Jeff Johnson295189b2012-06-20 16:38:30 -07004941 wdiAddBARspCb: callback for passing back the response of
4942 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004943
Jeff Johnson295189b2012-06-20 16:38:30 -07004944 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004945 callback
4946
Jeff Johnson295189b2012-06-20 16:38:30 -07004947 @see WDI_PostAssocReq
4948 @return Result of the function call
4949*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004950WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004951WDI_TriggerBAReq
4952(
4953 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4954 WDI_TriggerBARspCb wdiTriggerBARspCb,
4955 void* pUserData
4956)
4957{
4958 WDI_EventInfoType wdiEventData;
4959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4960
4961 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004962 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004963 ------------------------------------------------------------------------*/
4964 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4965 {
4966 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4967 "WDI API call before module is initialized - Fail request");
4968
Jeff Johnsone7245742012-09-05 17:12:55 -07004969 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004970 }
4971
4972 /*------------------------------------------------------------------------
4973 Fill in Event data and post to the Main FSM
4974 ------------------------------------------------------------------------*/
4975 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004976 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4977 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4978 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004979 wdiEventData.pUserData = pUserData;
4980
4981 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4982
4983}/*WDI_AddBAReq*/
4984
4985/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004986 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004987 wishes to update any of the Beacon parameters used by HW.
4988 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4989 message to the lower RIVA sub-system if DAL is in state
4990 STARTED.
4991
4992 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004993 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004994
4995 WDI_PostAssocReq must have been called.
4996
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004998 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004999
Jeff Johnson295189b2012-06-20 16:38:30 -07005000 wdiUpdateBeaconParamsRspCb: callback for passing back the
5001 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005002
Jeff Johnson295189b2012-06-20 16:38:30 -07005003 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005004 callback
5005
Jeff Johnson295189b2012-06-20 16:38:30 -07005006 @see WDI_PostAssocReq
5007 @return Result of the function call
5008*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005009WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005010WDI_UpdateBeaconParamsReq
5011(
5012 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5013 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5014 void* pUserData
5015)
5016{
5017 WDI_EventInfoType wdiEventData;
5018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5019
5020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005021 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005022 ------------------------------------------------------------------------*/
5023 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5024 {
5025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5026 "WDI API call before module is initialized - Fail request");
5027
Jeff Johnsone7245742012-09-05 17:12:55 -07005028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005029 }
5030
5031 /*------------------------------------------------------------------------
5032 Fill in Event data and post to the Main FSM
5033 ------------------------------------------------------------------------*/
5034 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005035 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5036 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5037 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005038 wdiEventData.pUserData = pUserData;
5039
5040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5041
5042}/*WDI_UpdateBeaconParamsReq*/
5043
5044/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005045 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005046 wishes to update the Beacon template used by HW.
5047 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5048 message to the lower RIVA sub-system if DAL is in state
5049 STARTED.
5050
5051 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005052 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005053
5054 WDI_PostAssocReq must have been called.
5055
Jeff Johnsone7245742012-09-05 17:12:55 -07005056 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005057 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005058
Jeff Johnson295189b2012-06-20 16:38:30 -07005059 wdiSendBeaconParamsRspCb: callback for passing back the
5060 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005061
Jeff Johnson295189b2012-06-20 16:38:30 -07005062 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005063 callback
5064
Jeff Johnson295189b2012-06-20 16:38:30 -07005065 @see WDI_PostAssocReq
5066 @return Result of the function call
5067*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005068WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005069WDI_SendBeaconParamsReq
5070(
5071 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5072 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5073 void* pUserData
5074)
5075{
5076 WDI_EventInfoType wdiEventData;
5077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5078
5079 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005080 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005081 ------------------------------------------------------------------------*/
5082 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5083 {
5084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5085 "WDI API call before module is initialized - Fail request");
5086
Jeff Johnsone7245742012-09-05 17:12:55 -07005087 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005088 }
5089
5090 /*------------------------------------------------------------------------
5091 Fill in Event data and post to the Main FSM
5092 ------------------------------------------------------------------------*/
5093 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 wdiEventData.pEventData = pwdiSendBeaconParams;
5095 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5096 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005097 wdiEventData.pUserData = pUserData;
5098
5099 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5100
5101}/*WDI_SendBeaconParamsReq*/
5102
5103/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005104 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 upper MAC wants to update the probe response template to
5106 be transmitted as Soft AP
5107 Upon the call of this API the WLAN DAL will
5108 pack and send the probe rsp template message to the
5109 lower RIVA sub-system if DAL is in state STARTED.
5110
5111 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005112 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005113
5114
Jeff Johnsone7245742012-09-05 17:12:55 -07005115 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005116 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005117
Jeff Johnson295189b2012-06-20 16:38:30 -07005118 wdiSendBeaconParamsRspCb: callback for passing back the
5119 response of the Send Beacon Params operation received
5120 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005121
Jeff Johnson295189b2012-06-20 16:38:30 -07005122 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005123 callback
5124
Jeff Johnson295189b2012-06-20 16:38:30 -07005125 @see WDI_AddBAReq
5126 @return Result of the function call
5127*/
5128
Jeff Johnsone7245742012-09-05 17:12:55 -07005129WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005130WDI_UpdateProbeRspTemplateReq
5131(
5132 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5133 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5134 void* pUserData
5135)
5136{
5137 WDI_EventInfoType wdiEventData;
5138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5139
5140 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005141 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005142 ------------------------------------------------------------------------*/
5143 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5144 {
5145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5146 "WDI API call before module is initialized - Fail request");
5147
Jeff Johnsone7245742012-09-05 17:12:55 -07005148 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005149 }
5150
5151 /*------------------------------------------------------------------------
5152 Fill in Event data and post to the Main FSM
5153 ------------------------------------------------------------------------*/
5154 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005155 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5156 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5157 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005158 wdiEventData.pUserData = pUserData;
5159
5160 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5161
5162}/*WDI_UpdateProbeRspTemplateReq*/
5163
5164/**
5165 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5166 to the NV memory.
5167
5168
5169 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5170 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005171
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 wdiNvDownloadRspCb: callback for passing back the response of
5173 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005174
Jeff Johnson295189b2012-06-20 16:38:30 -07005175 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005176 callback
5177
Jeff Johnson295189b2012-06-20 16:38:30 -07005178 @see WDI_PostAssocReq
5179 @return Result of the function call
5180*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005181WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005182WDI_NvDownloadReq
5183(
5184 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5185 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5186 void* pUserData
5187)
5188{
5189 WDI_EventInfoType wdiEventData;
5190
5191 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005192 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005193 ------------------------------------------------------------------------*/
5194 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5195 {
5196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5197 "WDI API call before module is initialized - Fail request");
5198
Jeff Johnsone7245742012-09-05 17:12:55 -07005199 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005200 }
5201
5202 /*------------------------------------------------------------------------
5203 Fill in Event data and post to the Main FSM
5204 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005205 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5206 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5207 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5208 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005209 wdiEventData.pUserData = pUserData;
5210
5211 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5212
5213}/*WDI_NVDownloadReq*/
5214
Jeff Johnson295189b2012-06-20 16:38:30 -07005215/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005216 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005217 upper MAC wants to send Notice of Absence
5218 Upon the call of this API the WLAN DAL will
5219 pack and send the probe rsp template message to the
5220 lower RIVA sub-system if DAL is in state STARTED.
5221
5222 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005223 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005224
5225
Jeff Johnsone7245742012-09-05 17:12:55 -07005226 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005227 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005228
Jeff Johnson295189b2012-06-20 16:38:30 -07005229 wdiSendBeaconParamsRspCb: callback for passing back the
5230 response of the Send Beacon Params operation received
5231 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005232
Jeff Johnson295189b2012-06-20 16:38:30 -07005233 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005234 callback
5235
Jeff Johnson295189b2012-06-20 16:38:30 -07005236 @see WDI_AddBAReq
5237 @return Result of the function call
5238*/
5239WDI_Status
5240WDI_SetP2PGONOAReq
5241(
5242 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5243 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5244 void* pUserData
5245)
5246{
5247 WDI_EventInfoType wdiEventData;
5248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5249
5250 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005251 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005252 ------------------------------------------------------------------------*/
5253 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5254 {
5255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5256 "WDI API call before module is initialized - Fail request");
5257
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005259 }
5260
5261 /*------------------------------------------------------------------------
5262 Fill in Event data and post to the Main FSM
5263 ------------------------------------------------------------------------*/
5264 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005265 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5266 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5267 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 wdiEventData.pUserData = pUserData;
5269
5270 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5271
5272}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005273
5274/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005275 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005276 UMAC wanted to add STA self while opening any new session
5277 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005278 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005279
5280
Jeff Johnsone7245742012-09-05 17:12:55 -07005281 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005283
Jeff Johnson295189b2012-06-20 16:38:30 -07005284 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005285 callback
5286
5287 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005288 @return Result of the function call
5289*/
5290WDI_Status
5291WDI_AddSTASelfReq
5292(
5293 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5294 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5295 void* pUserData
5296)
5297{
5298 WDI_EventInfoType wdiEventData;
5299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5300
5301 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005302 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005303 ------------------------------------------------------------------------*/
5304 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5305 {
5306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5307 "WDI API call before module is initialized - Fail request");
5308
Jeff Johnsone7245742012-09-05 17:12:55 -07005309 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005310 }
5311
5312 /*------------------------------------------------------------------------
5313 Fill in Event data and post to the Main FSM
5314 ------------------------------------------------------------------------*/
5315 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005316 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5317 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5318 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 wdiEventData.pUserData = pUserData;
5320
5321 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5322
5323}/*WDI_AddSTASelfReq*/
5324
5325
Jeff Johnsone7245742012-09-05 17:12:55 -07005326#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005327/**
5328 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5329 the device of a successful add TSpec negotiation. HW
5330 needs to receive the TSpec Info from the UMAC in order
5331 to configure properly the QoS data traffic. Upon the
5332 call of this API the WLAN DAL will pack and send a HAL
5333 Add TS request message to the lower RIVA sub-system if
5334 DAL is in state STARTED.
5335
5336 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005337 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005338
5339 WDI_PostAssocReq must have been called.
5340
5341 @param wdiAddTsReqParams: the add TS parameters as specified by
5342 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005343
Jeff Johnson295189b2012-06-20 16:38:30 -07005344 wdiAddTsRspCb: callback for passing back the response of
5345 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005346
Jeff Johnson295189b2012-06-20 16:38:30 -07005347 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005348 callback
5349
Jeff Johnson295189b2012-06-20 16:38:30 -07005350 @see WDI_PostAssocReq
5351 @return Result of the function call
5352*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005353WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005354WDI_AggrAddTSReq
5355(
5356 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5357 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5358 void* pUserData
5359)
5360{
5361 WDI_EventInfoType wdiEventData;
5362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5363
5364 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005365 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005366 ------------------------------------------------------------------------*/
5367 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5368 {
5369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5370 "WDI API call before module is initialized - Fail request");
5371
Jeff Johnsone7245742012-09-05 17:12:55 -07005372 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005373 }
5374
5375 /*------------------------------------------------------------------------
5376 Fill in Event data and post to the Main FSM
5377 ------------------------------------------------------------------------*/
5378 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005379 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5380 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5381 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005382 wdiEventData.pUserData = pUserData;
5383
5384 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5385
5386}/*WDI_AggrAddTSReq*/
5387
5388#endif /* WLAN_FEATURE_VOWIFI_11R */
5389
Jeff Johnson295189b2012-06-20 16:38:30 -07005390/**
5391 @brief WDI_FTMCommandReq
5392 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005393
5394 @param ftmCommandReq: FTM Command Body
5395 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005396 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005397
Jeff Johnson295189b2012-06-20 16:38:30 -07005398 @see
5399 @return Result of the function call
5400*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005401WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005402WDI_FTMCommandReq
5403(
5404 WDI_FTMCommandReqType *ftmCommandReq,
5405 WDI_FTMCommandRspCb ftmCommandRspCb,
5406 void *pUserData
5407)
5408{
5409 WDI_EventInfoType wdiEventData;
5410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5411
5412 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005413 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005414 ------------------------------------------------------------------------*/
5415 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5416 {
5417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5418 "WDI API call before module is initialized - Fail request");
5419
Jeff Johnsone7245742012-09-05 17:12:55 -07005420 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005421 }
5422
5423 /*------------------------------------------------------------------------
5424 Fill in Event data and post to the Main FSM
5425 ------------------------------------------------------------------------*/
5426 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5427 wdiEventData.pEventData = (void *)ftmCommandReq;
5428 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5429 wdiEventData.pCBfnc = ftmCommandRspCb;
5430 wdiEventData.pUserData = pUserData;
5431
5432 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5433}
Jeff Johnson295189b2012-06-20 16:38:30 -07005434/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005435 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005436
5437 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005438 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005439
5440
5441 @param pwdiResumeReqParams: as specified by
5442 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005443
Jeff Johnson295189b2012-06-20 16:38:30 -07005444 wdiResumeReqRspCb: callback for passing back the response of
5445 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005446
Jeff Johnson295189b2012-06-20 16:38:30 -07005447 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 callback
5449
5450 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005451 @return Result of the function call
5452*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005453WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005454WDI_HostResumeReq
5455(
5456 WDI_ResumeParamsType* pwdiResumeReqParams,
5457 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5458 void* pUserData
5459)
5460{
5461 WDI_EventInfoType wdiEventData;
5462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5463
5464 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005465 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005466 ------------------------------------------------------------------------*/
5467 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5468 {
5469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5470 "WDI API call before module is initialized - Fail request");
5471
Jeff Johnsone7245742012-09-05 17:12:55 -07005472 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005473 }
5474
5475 /*------------------------------------------------------------------------
5476 Fill in Event data and post to the Main FSM
5477 ------------------------------------------------------------------------*/
5478 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005479 wdiEventData.pEventData = pwdiResumeReqParams;
5480 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5481 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005482 wdiEventData.pUserData = pUserData;
5483
5484 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5485
5486}/*WDI_HostResumeReq*/
5487
5488/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005489 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005490
5491 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005492 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005493
5494
5495 @param pwdiDelStaSelfReqParams: as specified by
5496 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005497
Jeff Johnson295189b2012-06-20 16:38:30 -07005498 wdiDelStaSelfRspCb: callback for passing back the response of
5499 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005500
Jeff Johnson295189b2012-06-20 16:38:30 -07005501 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005502 callback
5503
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 @see WDI_PostAssocReq
5505 @return Result of the function call
5506*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005507WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005508WDI_DelSTASelfReq
5509(
5510 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5511 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5512 void* pUserData
5513)
5514{
5515 WDI_EventInfoType wdiEventData;
5516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5517
5518 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005519 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005520 ------------------------------------------------------------------------*/
5521 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5522 {
5523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5524 "WDI API call before module is initialized - Fail request");
5525
Jeff Johnsone7245742012-09-05 17:12:55 -07005526 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005527 }
5528
5529 /*------------------------------------------------------------------------
5530 Fill in Event data and post to the Main FSM
5531 ------------------------------------------------------------------------*/
5532 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005533 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5534 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5535 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005536 wdiEventData.pUserData = pUserData;
5537
5538 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5539
5540}/*WDI_AggrAddTSReq*/
5541
5542/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005543 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5544 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005545 Upon the call of this API the WLAN DAL will pack
5546 and send a HAL Set Tx Per Tracking request message to the
5547 lower RIVA sub-system if DAL is in state STARTED.
5548
5549 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005550 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005551
Jeff Johnsone7245742012-09-05 17:12:55 -07005552 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005553 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005554
Jeff Johnson295189b2012-06-20 16:38:30 -07005555 pwdiSetTxPerTrackingRspCb: callback for passing back the
5556 response of the set Tx PER Tracking configurations operation received
5557 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005558
Jeff Johnson295189b2012-06-20 16:38:30 -07005559 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005560 callback
5561
Jeff Johnson295189b2012-06-20 16:38:30 -07005562 @return Result of the function call
5563*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005564WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005565WDI_SetTxPerTrackingReq
5566(
5567 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5568 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5569 void* pUserData
5570)
5571{
5572 WDI_EventInfoType wdiEventData;
5573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5574
5575 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005576 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005577 ------------------------------------------------------------------------*/
5578 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5579 {
5580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5581 "WDI API call before module is initialized - Fail request");
5582
Jeff Johnsone7245742012-09-05 17:12:55 -07005583 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005584 }
5585
5586 /*------------------------------------------------------------------------
5587 Fill in Event data and post to the Main FSM
5588 ------------------------------------------------------------------------*/
5589 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005590 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005591 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005592 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005593 wdiEventData.pUserData = pUserData;
5594
5595 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5596
5597}/*WDI_SetTxPerTrackingReq*/
5598
5599/**
5600 @brief WDI_SetTmLevelReq
5601 If HW Thermal condition changed, driver should react based on new
5602 HW thermal condition.
5603
5604 @param pwdiSetTmLevelReq: New thermal condition information
5605
5606 pwdiSetTmLevelRspCb: callback
5607
5608 usrData: user data will be passed back with the
5609 callback
5610
5611 @return Result of the function call
5612*/
5613WDI_Status
5614WDI_SetTmLevelReq
5615(
5616 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5617 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5618 void *usrData
5619)
5620{
5621 WDI_EventInfoType wdiEventData;
5622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5623
5624 /*------------------------------------------------------------------------
5625 Sanity Check
5626 ------------------------------------------------------------------------*/
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
5632 return WDI_STATUS_E_NOT_ALLOWED;
5633 }
5634
5635 /*------------------------------------------------------------------------
5636 Fill in Event data and post to the Main FSM
5637 ------------------------------------------------------------------------*/
5638 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5639 wdiEventData.pEventData = pwdiSetTmLevelReq;
5640 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5641 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5642 wdiEventData.pUserData = usrData;
5643
5644 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5645}
5646
5647/**
5648 @brief WDI_HostSuspendInd
5649
5650 Suspend Indication from the upper layer will be sent
5651 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005652
Jeff Johnson295189b2012-06-20 16:38:30 -07005653 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005654
5655 @see
5656
Jeff Johnson295189b2012-06-20 16:38:30 -07005657 @return Status of the request
5658*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005659WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005660WDI_HostSuspendInd
5661(
5662 WDI_SuspendParamsType* pwdiSuspendIndParams
5663)
5664{
5665
5666 WDI_EventInfoType wdiEventData;
5667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5668
5669 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005670 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005671 ------------------------------------------------------------------------*/
5672 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5673 {
5674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5675 "WDI API call before module is initialized - Fail request");
5676
Jeff Johnsone7245742012-09-05 17:12:55 -07005677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 }
5679
5680 /*------------------------------------------------------------------------
5681 Fill in Event data and post to the Main FSM
5682 ------------------------------------------------------------------------*/
5683 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005684 wdiEventData.pEventData = pwdiSuspendIndParams;
5685 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5686 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005687 wdiEventData.pUserData = NULL;
5688
5689 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5690
5691}/*WDI_HostSuspendInd*/
5692
5693/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005694 @brief WDI_TrafficStatsInd
5695 Traffic Stats from the upper layer will be sent
5696 down to HAL
5697
5698 @param WDI_TrafficStatsIndType
5699
5700 @see
5701
5702 @return Status of the request
5703*/
5704WDI_Status
5705WDI_TrafficStatsInd
5706(
5707 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5708)
5709{
5710
5711 WDI_EventInfoType wdiEventData;
5712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5713
5714 /*------------------------------------------------------------------------
5715 Sanity Check
5716 ------------------------------------------------------------------------*/
5717 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5718 {
5719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5720 "WDI API call before module is initialized - Fail request");
5721
5722 return WDI_STATUS_E_NOT_ALLOWED;
5723 }
5724
5725 /*------------------------------------------------------------------------
5726 Fill in Event data and post to the Main FSM
5727 ------------------------------------------------------------------------*/
5728 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5729 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5730 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5731 wdiEventData.pCBfnc = NULL;
5732 wdiEventData.pUserData = NULL;
5733
5734 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5735
5736}/*WDI_TrafficStatsInd*/
5737
Chet Lanctota96bb432013-03-18 10:26:30 -07005738#ifdef WLAN_FEATURE_11W
5739/**
5740 @brief WDI_ExcludeUnencryptedInd
5741 Register with HAL to receive/drop unencrypted frames
5742
5743 @param WDI_ExcludeUnencryptIndType
5744
5745 @see
5746
5747 @return Status of the request
5748*/
5749WDI_Status
5750WDI_ExcludeUnencryptedInd
5751(
5752 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5753)
5754{
5755
5756 WDI_EventInfoType wdiEventData;
5757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5758
5759 /*------------------------------------------------------------------------
5760 Sanity Check
5761 ------------------------------------------------------------------------*/
5762 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5763 {
5764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5765 "WDI API call before module is initialized - Fail request");
5766
5767 return WDI_STATUS_E_NOT_ALLOWED;
5768 }
5769
5770 /*------------------------------------------------------------------------
5771 Fill in Event data and post to the Main FSM
5772 ------------------------------------------------------------------------*/
5773 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
5774 wdiEventData.pEventData = pWdiExcUnencParams;
5775 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
5776 wdiEventData.pCBfnc = NULL;
5777 wdiEventData.pUserData = NULL;
5778
5779 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5780
5781}/*WDI_TrafficStatsInd*/
5782#endif
5783
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005784/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 @brief WDI_HALDumpCmdReq
5786 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005787
5788 @param halDumpCmdReqParams: Hal Dump Command Body
5789 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005790 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005791
Jeff Johnson295189b2012-06-20 16:38:30 -07005792 @see
5793 @return Result of the function call
5794*/
5795WDI_Status WDI_HALDumpCmdReq
5796(
5797 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5798 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5799 void *pUserData
5800)
5801{
5802 WDI_EventInfoType wdiEventData;
5803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5804
5805 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005806 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005807 ------------------------------------------------------------------------*/
5808 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5809 {
5810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5811 "WDI API call before module is initialized - Fail request");
5812
Jeff Johnsone7245742012-09-05 17:12:55 -07005813 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005814 }
5815
5816 /*------------------------------------------------------------------------
5817 Fill in Event data and post to the Main FSM
5818 ------------------------------------------------------------------------*/
5819 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5820 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5821 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5822 wdiEventData.pCBfnc = halDumpCmdRspCb;
5823 wdiEventData.pUserData = pUserData;
5824
5825 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5826}
5827
Jeff Johnsone7245742012-09-05 17:12:55 -07005828/*============================================================================
5829
Jeff Johnson295189b2012-06-20 16:38:30 -07005830 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005831
Jeff Johnson295189b2012-06-20 16:38:30 -07005832 ============================================================================*/
5833
5834/**
5835 @brief Main FSM Start function for all states except BUSY
5836
Jeff Johnsone7245742012-09-05 17:12:55 -07005837
5838 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005839 wdiEV: event posted to the main DAL FSM
5840 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005841 structure
5842
Jeff Johnson295189b2012-06-20 16:38:30 -07005843 @see
5844 @return Result of the function call
5845*/
5846WDI_Status
5847WDI_PostMainEvent
5848(
Jeff Johnsone7245742012-09-05 17:12:55 -07005849 WDI_ControlBlockType* pWDICtx,
5850 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005851 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005852
Jeff Johnson295189b2012-06-20 16:38:30 -07005853)
5854{
Jeff Johnsone7245742012-09-05 17:12:55 -07005855 WDI_Status wdiStatus;
5856 WDI_MainFuncType pfnWDIMainEvHdlr;
5857 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5859
5860 /*-------------------------------------------------------------------------
5861 Sanity check
5862 -------------------------------------------------------------------------*/
5863 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5864 ( wdiEV >= WDI_MAX_EVENT ))
5865 {
5866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5867 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5868 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005869 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 }
5871
5872 /*Access to the global state must be locked */
5873 wpalMutexAcquire(&pWDICtx->wptMutex);
5874
5875 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005876 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005877
5878 wdiOldState = pWDICtx->uGlobalState;
5879
5880 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005881 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5882 response comes from CCPU for the request sent by host:
5883 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 -07005884 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 -07005885 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005886 CCPU:
5887 don't change the state */
5888 if ( WDI_RESPONSE_EVENT != wdiEV)
5889 {
5890 /*Transition to BUSY State - the request is now being processed by the FSM,
5891 if the request fails we shall transition back to the old state, if not
5892 the request will manage its own state transition*/
5893 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5894 }
5895 /* If the state function associated with the EV is NULL it means that this
5896 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005897 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005898 {
5899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005900 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005901 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005902 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 }
5904 else
5905 {
5906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005907 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005908 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005909 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005910 }
5911
5912 /* If a request handles itself well it will end up in a success or in a
5913 pending
5914 Success - means that the request was processed and the proper state
5915 transition already occurred or will occur when the resp is received
5916 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005917
Jeff Johnson295189b2012-06-20 16:38:30 -07005918 Pending - means the request could not be processed at this moment in time
5919 because the FSM was already busy so no state transition or dequeueing
5920 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005921
Jeff Johnson295189b2012-06-20 16:38:30 -07005922 Success for synchronous case means that the transition may occur and
5923 processing of pending requests may continue - so it should go through
5924 and restores the state and continue processing queued requests*/
5925 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5926 ( WDI_STATUS_PENDING != wdiStatus ))
5927 {
5928 if ( WDI_RESPONSE_EVENT != wdiEV)
5929 {
5930 /*The request has failed or could not be processed - transition back to
5931 the old state - check to see if anything was queued and try to execute
5932 The dequeue logic should post a message to a thread and return - no
5933 actual processing can occur */
5934 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5935 }
5936 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005937
Jeff Johnson295189b2012-06-20 16:38:30 -07005938 }
5939
5940 /* we have completed processing the event */
5941 wpalMutexRelease(&pWDICtx->wptMutex);
5942
Jeff Johnsone7245742012-09-05 17:12:55 -07005943 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005944
5945}/*WDI_PostMainEvent*/
5946
5947
5948/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005949 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005950--------------------------------------------------------------------------*/
5951/**
5952 @brief Main FSM Start function for all states except BUSY
5953
Jeff Johnsone7245742012-09-05 17:12:55 -07005954
5955 @param pWDICtx: pointer to the WLAN DAL context
5956 pEventData: pointer to the event information structure
5957
Jeff Johnson295189b2012-06-20 16:38:30 -07005958 @see
5959 @return Result of the function call
5960*/
5961WDI_Status
5962WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005963(
Jeff Johnson295189b2012-06-20 16:38:30 -07005964 WDI_ControlBlockType* pWDICtx,
5965 WDI_EventInfoType* pEventData
5966)
5967{
5968
5969 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005970 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005971 ----------------------------------------------------------------------*/
5972 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5973 {
5974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005975 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 pWDICtx, pEventData);
5977 return WDI_STATUS_E_FAILURE;
5978 }
5979
5980 wpalMutexAcquire(&pWDICtx->wptMutex);
5981
5982 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005983 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005984 ----------------------------------------------------------------------*/
5985 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5986 {
5987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5988 "Control Transport not yet Open - queueing the request");
5989
5990 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005991 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005992
5993 wpalMutexRelease(&pWDICtx->wptMutex);
5994 return WDI_STATUS_PENDING;
5995 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005996
Jeff Johnson295189b2012-06-20 16:38:30 -07005997 wpalMutexRelease(&pWDICtx->wptMutex);
5998
5999 /*Return Success*/
6000 return WDI_ProcessRequest( pWDICtx, pEventData );
6001
6002}/*WDI_MainStart*/
6003
6004/**
6005 @brief Main FSM Response function for state INIT
6006
Jeff Johnsone7245742012-09-05 17:12:55 -07006007
6008 @param pWDICtx: pointer to the WLAN DAL context
6009 pEventData: pointer to the event information structure
6010
Jeff Johnson295189b2012-06-20 16:38:30 -07006011 @see
6012 @return Result of the function call
6013*/
6014WDI_Status
6015WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006016(
Jeff Johnson295189b2012-06-20 16:38:30 -07006017 WDI_ControlBlockType* pWDICtx,
6018 WDI_EventInfoType* pEventData
6019)
6020{
6021 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006022 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006023 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006024 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006025
6026 /*Return Success*/
6027 return WDI_STATUS_E_NOT_ALLOWED;
6028}/* WDI_MainRspInit */
6029
6030/**
6031 @brief Main FSM Close function for all states except BUSY
6032
Jeff Johnsone7245742012-09-05 17:12:55 -07006033
6034 @param pWDICtx: pointer to the WLAN DAL context
6035 pEventData: pointer to the event information structure
6036
Jeff Johnson295189b2012-06-20 16:38:30 -07006037 @see
6038 @return Result of the function call
6039*/
6040WDI_Status
6041WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006042(
Jeff Johnson295189b2012-06-20 16:38:30 -07006043 WDI_ControlBlockType* pWDICtx,
6044 WDI_EventInfoType* pEventData
6045)
6046{
6047
6048 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006049 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006050 ----------------------------------------------------------------------*/
6051 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6052 {
6053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006054 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006055 pWDICtx, pEventData);
6056 return WDI_STATUS_E_FAILURE;
6057 }
6058
6059 /*Return Success*/
6060 return WDI_ProcessRequest( pWDICtx, pEventData );
6061
6062}/*WDI_MainClose*/
6063/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006064 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006065--------------------------------------------------------------------------*/
6066/**
6067 @brief Main FSM Start function for state STARTED
6068
Jeff Johnsone7245742012-09-05 17:12:55 -07006069
6070 @param pWDICtx: pointer to the WLAN DAL context
6071 pEventData: pointer to the event information structure
6072
Jeff Johnson295189b2012-06-20 16:38:30 -07006073 @see
6074 @return Result of the function call
6075*/
6076WDI_Status
6077WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006078(
Jeff Johnson295189b2012-06-20 16:38:30 -07006079 WDI_ControlBlockType* pWDICtx,
6080 WDI_EventInfoType* pEventData
6081)
6082{
6083 WDI_StartRspCb wdiStartRspCb = NULL;
6084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6085
6086 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006087 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006088 ----------------------------------------------------------------------*/
6089 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6090 {
6091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006092 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006093 pWDICtx, pEventData);
6094 return WDI_STATUS_E_FAILURE;
6095 }
6096
6097 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006098 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006099 ----------------------------------------------------------------------*/
6100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006101 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006102
6103 wpalMutexAcquire(&pWDICtx->wptMutex);
6104
6105 /*Transition back to started because the post function transitioned us to
6106 busy*/
6107 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6108
6109 /*Check to see if any request is pending*/
6110 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006111
Jeff Johnson295189b2012-06-20 16:38:30 -07006112 wpalMutexRelease(&pWDICtx->wptMutex);
6113
6114 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006115 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6116
Jeff Johnson295189b2012-06-20 16:38:30 -07006117 /*Notify UMAC*/
6118 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6119
6120 /*Return Success*/
6121 return WDI_STATUS_SUCCESS;
6122
6123}/*WDI_MainStartStarted*/
6124
6125/**
6126 @brief Main FSM Stop function for state STARTED
6127
Jeff Johnsone7245742012-09-05 17:12:55 -07006128
6129 @param pWDICtx: pointer to the WLAN DAL context
6130 pEventData: pointer to the event information structure
6131
Jeff Johnson295189b2012-06-20 16:38:30 -07006132 @see
6133 @return Result of the function call
6134*/
6135WDI_Status
6136WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006137(
Jeff Johnson295189b2012-06-20 16:38:30 -07006138 WDI_ControlBlockType* pWDICtx,
6139 WDI_EventInfoType* pEventData
6140)
6141{
6142 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006143 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006144 ----------------------------------------------------------------------*/
6145 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6146 {
6147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006148 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006149 pWDICtx, pEventData);
6150 return WDI_STATUS_E_FAILURE;
6151 }
6152
6153 /*State at this point is BUSY - because we enter this state before posting
6154 an event to the FSM in order to prevent potential race conditions*/
6155
6156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6157 "Processing stop request in FSM");
6158
6159 /*Return Success*/
6160 return WDI_ProcessRequest( pWDICtx, pEventData );
6161
6162}/*WDI_MainStopStarted*/
6163/**
6164 @brief Main FSM Request function for state started
6165
Jeff Johnsone7245742012-09-05 17:12:55 -07006166
6167 @param pWDICtx: pointer to the WLAN DAL context
6168 pEventData: pointer to the event information structure
6169
Jeff Johnson295189b2012-06-20 16:38:30 -07006170 @see
6171 @return Result of the function call
6172*/
6173WDI_Status
6174WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006175(
Jeff Johnson295189b2012-06-20 16:38:30 -07006176 WDI_ControlBlockType* pWDICtx,
6177 WDI_EventInfoType* pEventData
6178)
6179{
6180
6181 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006182 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006183 ----------------------------------------------------------------------*/
6184 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6185 {
6186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006187 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006188 pWDICtx, pEventData);
6189 return WDI_STATUS_E_FAILURE;
6190 }
6191
6192 /*State at this point is BUSY - because we enter this state before posting
6193 an event to the FSM in order to prevent potential race conditions*/
6194
6195 /*Return Success*/
6196 return WDI_ProcessRequest( pWDICtx, pEventData );
6197
6198}/*WDI_MainReqStarted*/
6199
6200/**
6201 @brief Main FSM Response function for all states except INIT
6202
Jeff Johnsone7245742012-09-05 17:12:55 -07006203
6204 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006205 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006206
Jeff Johnson295189b2012-06-20 16:38:30 -07006207 @see
6208 @return Result of the function call
6209*/
6210WDI_Status
6211WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006212(
Jeff Johnson295189b2012-06-20 16:38:30 -07006213 WDI_ControlBlockType* pWDICtx,
6214 WDI_EventInfoType* pEventData
6215)
6216{
Jeff Johnsone7245742012-09-05 17:12:55 -07006217 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006218 wpt_boolean expectedResponse;
6219
6220 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006221 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006222 ----------------------------------------------------------------------*/
6223 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6224 {
6225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006226 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006227 pWDICtx, pEventData);
6228 return WDI_STATUS_E_FAILURE;
6229 }
6230
6231 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6232 {
6233 /* we received an expected response */
6234 expectedResponse = eWLAN_PAL_TRUE;
6235
6236 /*We expect that we will transition to started after this processing*/
6237 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6238
6239 /* we are no longer expecting a response */
6240 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6241 }
6242 else
6243 {
6244 /* we received an indication or unexpected response */
6245 expectedResponse = eWLAN_PAL_FALSE;
6246 /* for indications no need to update state from what it is right
6247 now, unless it explicitly does it in the indication handler (say
6248 for device failure ind) */
6249 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6250 }
6251
6252 /*Process the response and indication */
6253 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6254
6255 /*Lock the CB as we are about to do a state transition*/
6256 wpalMutexAcquire(&pWDICtx->wptMutex);
6257
6258 /*Transition to the expected state after the response processing
6259 - this should always be started state with the following exceptions:
6260 1. processing of a failed start response
6261 2. device failure detected while processing response
6262 3. stop response received*/
6263 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006264
Jeff Johnson295189b2012-06-20 16:38:30 -07006265 /*Dequeue request that may have been queued while we were waiting for the
6266 response */
6267 if ( expectedResponse )
6268 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006269 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006270 }
6271
6272 wpalMutexRelease(&pWDICtx->wptMutex);
6273
6274 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006275 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006276
6277}/*WDI_MainRsp*/
6278
6279/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006280 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006281--------------------------------------------------------------------------*/
6282/**
6283 @brief Main FSM Stop function for state STOPPED
6284
Jeff Johnsone7245742012-09-05 17:12:55 -07006285
6286 @param pWDICtx: pointer to the WLAN DAL context
6287 pEventData: pointer to the event information structure
6288
Jeff Johnson295189b2012-06-20 16:38:30 -07006289 @see
6290 @return Result of the function call
6291*/
6292WDI_Status
6293WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006294(
Jeff Johnson295189b2012-06-20 16:38:30 -07006295 WDI_ControlBlockType* pWDICtx,
6296 WDI_EventInfoType* pEventData
6297)
6298{
6299 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006300 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 ----------------------------------------------------------------------*/
6302 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6303 {
6304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006305 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006306 pWDICtx, pEventData);
6307 return WDI_STATUS_E_FAILURE;
6308 }
6309
6310 /*We should normally not get a STOP request if we are already stopped
6311 since we should normally be stopped by the UMAC. However in some
6312 error situations we put ourselves in the stopped state without the
6313 UMAC knowing, so when we get a STOP request in this state we still
6314 process it since we need to clean up the underlying state */
6315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6316 "Processing stop request while stopped in FSM");
6317
6318 /*Return Success*/
6319 return WDI_ProcessRequest( pWDICtx, pEventData );
6320
6321}/*WDI_MainStopStopped*/
6322
6323/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006324 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006325--------------------------------------------------------------------------*/
6326/**
6327 @brief Main FSM Start function for state BUSY
6328
Jeff Johnsone7245742012-09-05 17:12:55 -07006329
6330 @param pWDICtx: pointer to the WLAN DAL context
6331 pEventData: pointer to the event information structure
6332
Jeff Johnson295189b2012-06-20 16:38:30 -07006333 @see
6334 @return Result of the function call
6335*/
6336WDI_Status
6337WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006338(
Jeff Johnson295189b2012-06-20 16:38:30 -07006339 WDI_ControlBlockType* pWDICtx,
6340 WDI_EventInfoType* pEventData
6341)
6342{
6343 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006344 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006345 ----------------------------------------------------------------------*/
6346 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6347 {
6348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006349 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006350 pWDICtx, pEventData);
6351 return WDI_STATUS_E_FAILURE;
6352 }
6353
6354 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006355 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006356 ----------------------------------------------------------------------*/
6357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6358 "WDI Busy state - queue start request");
6359
6360 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006361 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006362
6363 /*Return Success*/
6364 return WDI_STATUS_PENDING;
6365}/*WDI_MainStartBusy*/
6366
6367/**
6368 @brief Main FSM Stop function for state BUSY
6369
Jeff Johnsone7245742012-09-05 17:12:55 -07006370
6371 @param pWDICtx: pointer to the WLAN DAL context
6372 pEventData: pointer to the event information structure
6373
Jeff Johnson295189b2012-06-20 16:38:30 -07006374 @see
6375 @return Result of the function call
6376*/
6377WDI_Status
6378WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006379(
Jeff Johnson295189b2012-06-20 16:38:30 -07006380 WDI_ControlBlockType* pWDICtx,
6381 WDI_EventInfoType* pEventData
6382)
6383{
6384 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006385 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006386 ----------------------------------------------------------------------*/
6387 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6388 {
6389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006390 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006391 pWDICtx, pEventData);
6392 return WDI_STATUS_E_FAILURE;
6393 }
6394
6395 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006396 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006397 ----------------------------------------------------------------------*/
6398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6399 "WDI Busy state - queue stop request");
6400
Jeff Johnsone7245742012-09-05 17:12:55 -07006401 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006402 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006403
Jeff Johnson295189b2012-06-20 16:38:30 -07006404}/*WDI_MainStopBusy*/
6405
6406/**
6407 @brief Main FSM Request function for state BUSY
6408
Jeff Johnsone7245742012-09-05 17:12:55 -07006409
6410 @param pWDICtx: pointer to the WLAN DAL context
6411 pEventData: pointer to the event information structure
6412
Jeff Johnson295189b2012-06-20 16:38:30 -07006413 @see
6414 @return Result of the function call
6415*/
6416WDI_Status
6417WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006418(
Jeff Johnson295189b2012-06-20 16:38:30 -07006419 WDI_ControlBlockType* pWDICtx,
6420 WDI_EventInfoType* pEventData
6421)
6422{
6423 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006424 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006425 ----------------------------------------------------------------------*/
6426 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6427 {
6428 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006429 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006430 pWDICtx, pEventData);
6431 return WDI_STATUS_E_FAILURE;
6432 }
6433
6434 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006435 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006436 ----------------------------------------------------------------------*/
6437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6438 "WDI Busy state - queue request %d because waiting for response %d",
6439 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6440
Jeff Johnsone7245742012-09-05 17:12:55 -07006441 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006442 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006443
Jeff Johnson295189b2012-06-20 16:38:30 -07006444}/*WDI_MainReqBusy*/
6445/**
6446 @brief Main FSM Close function for state BUSY
6447
Jeff Johnsone7245742012-09-05 17:12:55 -07006448
6449 @param pWDICtx: pointer to the WLAN DAL context
6450 pEventData: pointer to the event information structure
6451
Jeff Johnson295189b2012-06-20 16:38:30 -07006452 @see
6453 @return Result of the function call
6454*/
6455WDI_Status
6456WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006457(
Jeff Johnson295189b2012-06-20 16:38:30 -07006458 WDI_ControlBlockType* pWDICtx,
6459 WDI_EventInfoType* pEventData
6460)
6461{
6462 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006463 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006464 ----------------------------------------------------------------------*/
6465 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6466 {
6467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006468 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006469 pWDICtx, pEventData);
6470 return WDI_STATUS_E_FAILURE;
6471 }
6472
6473 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006474 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006475 ----------------------------------------------------------------------*/
6476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6477 "WDI Busy state - queue close request");
6478
Jeff Johnsone7245742012-09-05 17:12:55 -07006479 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006480 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006481
Jeff Johnson295189b2012-06-20 16:38:30 -07006482}/*WDI_MainCloseBusy*/
6483
6484/**
6485 @brief Main FSM Shutdown function for INIT & STARTED states
6486
6487
6488 @param pWDICtx: pointer to the WLAN DAL context
6489 pEventData: pointer to the event information structure
6490
6491 @see
6492 @return Result of the function call
6493*/
6494WDI_Status
6495WDI_MainShutdown
6496(
6497 WDI_ControlBlockType* pWDICtx,
6498 WDI_EventInfoType* pEventData
6499)
6500{
6501 /*--------------------------------------------------------------------
6502 Sanity Check
6503 ----------------------------------------------------------------------*/
6504 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6505 {
6506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6507 "Invalid parameters on Main Start %x %x",
6508 pWDICtx, pEventData);
6509 return WDI_STATUS_E_FAILURE;
6510 }
6511
6512 /*State at this point is BUSY - because we enter this state before posting
6513 an event to the FSM in order to prevent potential race conditions*/
6514
6515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6516 "Processing shutdown request in FSM");
6517
6518 /*Return Success*/
6519 return WDI_ProcessRequest( pWDICtx, pEventData );
6520
6521}/*WDI_MainShutdown*/
6522
6523/**
6524 @brief Main FSM Shutdown function for BUSY state
6525
6526
6527 @param pWDICtx: pointer to the WLAN DAL context
6528 pEventData: pointer to the event information structure
6529
6530 @see
6531 @return Result of the function call
6532*/
6533WDI_Status
6534WDI_MainShutdownBusy
6535(
6536 WDI_ControlBlockType* pWDICtx,
6537 WDI_EventInfoType* pEventData
6538)
6539{
6540 /*--------------------------------------------------------------------
6541 Sanity Check
6542 ----------------------------------------------------------------------*/
6543 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6544 {
6545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6546 "Invalid parameters on Main Start %x %x",
6547 pWDICtx, pEventData);
6548 return WDI_STATUS_E_FAILURE;
6549 }
6550
6551 /* If you are waiting for a HAL response at this stage, you are not
6552 * going to get it. Riva is already shutdown/crashed.
6553 */
6554 wpalTimerStop(&gWDICb.wptResponseTimer);
6555
6556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6557 "Processing shutdown request in FSM: Busy state ");
6558
6559 return WDI_ProcessRequest( pWDICtx, pEventData );
6560
6561}/*WDI_MainShutdownBusy*/
6562
6563
Jeff Johnsone7245742012-09-05 17:12:55 -07006564/*=======================================================================
6565
Jeff Johnson295189b2012-06-20 16:38:30 -07006566 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006567
Jeff Johnson295189b2012-06-20 16:38:30 -07006568*=======================================================================*/
6569
6570/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006571 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006572========================================================================*/
6573/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006574 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006575 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006576
6577 @param pWDICtx: pointer to the WLAN DAL context
6578 pEventData: pointer to the event information structure
6579
Jeff Johnson295189b2012-06-20 16:38:30 -07006580 @see
6581 @return Result of the function call
6582*/
6583WDI_Status
6584WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006585(
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 WDI_ControlBlockType* pWDICtx,
6587 WDI_EventInfoType* pEventData
6588)
6589{
6590 WDI_StartReqParamsType* pwdiStartParams = NULL;
6591 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006592 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006593 wpt_uint16 usDataOffset = 0;
6594 wpt_uint16 usSendSize = 0;
6595
Jeff Johnsone7245742012-09-05 17:12:55 -07006596 tHalMacStartReqMsg halStartReq;
6597 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6599
6600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006602 -------------------------------------------------------------------------*/
6603 if (( NULL == pEventData ) ||
6604 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6605 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6606 {
6607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006608 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006611 }
6612
6613 /*-----------------------------------------------------------------------
6614 Get message buffer
6615 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006616 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006617 pwdiStartParams->usConfigBufferLen;
6618
Jeff Johnsone7245742012-09-05 17:12:55 -07006619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006620 usLen,
6621 &pSendBuffer, &usDataOffset, &usSendSize))||
6622 ( usSendSize < (usDataOffset + usLen )))
6623 {
6624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6625 "Unable to get send buffer in start req %x %x %x",
6626 pEventData, pwdiStartParams, wdiStartRspCb);
6627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006629 }
6630
6631 /*-----------------------------------------------------------------------
6632 Fill in the message
6633 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006634 halStartReq.startReqParams.driverType =
6635 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006636
Jeff Johnsone7245742012-09-05 17:12:55 -07006637 halStartReq.startReqParams.uConfigBufferLen =
6638 pwdiStartParams->usConfigBufferLen;
6639 wpalMemoryCopy( pSendBuffer+usDataOffset,
6640 &halStartReq.startReqParams,
6641 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006642
Jeff Johnsone7245742012-09-05 17:12:55 -07006643 usDataOffset += sizeof(halStartReq.startReqParams);
6644 wpalMemoryCopy( pSendBuffer+usDataOffset,
6645 pwdiStartParams->pConfigBuffer,
6646 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006647
6648 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006649 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006650
6651 /*Save Low Level Ind CB and associated user data - it will be used further
6652 on when an indication is coming from the lower MAC*/
6653 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006654 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006655
Jeff Johnsone7245742012-09-05 17:12:55 -07006656 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006658 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006659 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006660 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006661 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6662
Jeff Johnsone7245742012-09-05 17:12:55 -07006663
Jeff Johnson295189b2012-06-20 16:38:30 -07006664}/*WDI_ProcessStartReq*/
6665
6666/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006667 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006668 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006669
6670 @param pWDICtx: pointer to the WLAN DAL context
6671 pEventData: pointer to the event information structure
6672
Jeff Johnson295189b2012-06-20 16:38:30 -07006673 @see
6674 @return Result of the function call
6675*/
6676WDI_Status
6677WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006678(
Jeff Johnson295189b2012-06-20 16:38:30 -07006679 WDI_ControlBlockType* pWDICtx,
6680 WDI_EventInfoType* pEventData
6681)
6682{
6683 WDI_StopReqParamsType* pwdiStopParams = NULL;
6684 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006685 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006686 wpt_uint16 usDataOffset = 0;
6687 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006688 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006689 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6691
6692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006693 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006694 -------------------------------------------------------------------------*/
6695 if (( NULL == pEventData ) ||
6696 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6697 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6698 {
6699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006700 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006701 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006702 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006703 }
6704
6705 /*-----------------------------------------------------------------------
6706 Get message buffer
6707 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006708 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006709 sizeof(halStopReq.stopReqParams),
6710 &pSendBuffer, &usDataOffset, &usSendSize))||
6711 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6712 {
6713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6714 "Unable to get send buffer in stop req %x %x %x",
6715 pEventData, pwdiStopParams, wdiStopRspCb);
6716 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006717 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006718 }
6719
6720 /*-----------------------------------------------------------------------
6721 Fill in the message
6722 -----------------------------------------------------------------------*/
6723 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6724 pwdiStopParams->wdiStopReason);
6725
Jeff Johnsone7245742012-09-05 17:12:55 -07006726 wpalMemoryCopy( pSendBuffer+usDataOffset,
6727 &halStopReq.stopReqParams,
6728 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006729
6730 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006731 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006732
6733 /*! TO DO: stop the data services */
6734 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6735 {
6736 /*Stop the STA Table !UT- check this logic again
6737 It is safer to do it here than on the response - because a stop is imminent*/
6738 WDI_STATableStop(pWDICtx);
6739
6740 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006741 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6742 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006743 {
6744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6745 "WDI Init failed to reset power state event");
6746
Jeff Johnsone7245742012-09-05 17:12:55 -07006747 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006748 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006749 }
6750 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006751 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6752 if( eWLAN_PAL_STATUS_SUCCESS != status )
6753 {
6754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6755 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6756 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006757 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006758 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006759 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006760 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006761 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006762 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6763 WDI_SET_POWER_STATE_TIMEOUT);
6764 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006765 {
6766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6767 "WDI Init failed to wait on an event");
6768
Jeff Johnsone7245742012-09-05 17:12:55 -07006769 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006770 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006771 }
6772 }
6773
6774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006775 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006776 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006777 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006778 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6779
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006780fail:
6781 // Release the message buffer so we don't leak
6782 wpalMemoryFree(pSendBuffer);
6783
6784failRequest:
6785 //WDA should have failure check to avoid the memory leak
6786 return WDI_STATUS_E_FAILURE;
6787
Jeff Johnson295189b2012-06-20 16:38:30 -07006788}/*WDI_ProcessStopReq*/
6789
6790/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006791 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006793
6794 @param pWDICtx: pointer to the WLAN DAL context
6795 pEventData: pointer to the event information structure
6796
Jeff Johnson295189b2012-06-20 16:38:30 -07006797 @see
6798 @return Result of the function call
6799*/
6800WDI_Status
6801WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006802(
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 WDI_ControlBlockType* pWDICtx,
6804 WDI_EventInfoType* pEventData
6805)
6806{
Jeff Johnsone7245742012-09-05 17:12:55 -07006807 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6809
6810 /*Lock control block for cleanup*/
6811 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006812
Jeff Johnson295189b2012-06-20 16:38:30 -07006813 /*Clear all pending request*/
6814 WDI_ClearPendingRequests(pWDICtx);
6815
6816 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006817 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006818
6819 /* Close Data transport*/
6820 /* FTM mode does not open Data Path */
6821 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6822 {
6823 WDTS_Close(pWDICtx);
6824 }
6825
6826 /*Close the STA Table !UT- check this logic again*/
6827 WDI_STATableClose(pWDICtx);
6828
6829 /*close the PAL */
6830 wptStatus = wpalClose(pWDICtx->pPALContext);
6831 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6832 {
6833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6834 "Failed to wpal Close %d", wptStatus);
6835 WDI_ASSERT(0);
6836 }
6837
6838 /*Transition back to init state*/
6839 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6840
6841 wpalMutexRelease(&pWDICtx->wptMutex);
6842
6843 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006844 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006845
Jeff Johnsone7245742012-09-05 17:12:55 -07006846 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006847}/*WDI_ProcessCloseReq*/
6848
6849
6850/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006851 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006852===========================================================================*/
6853
6854/**
6855 @brief Process Init Scan Request function (called when Main FSM
6856 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006857
6858 @param pWDICtx: pointer to the WLAN DAL context
6859 pEventData: pointer to the event information structure
6860
Jeff Johnson295189b2012-06-20 16:38:30 -07006861 @see
6862 @return Result of the function call
6863*/
6864WDI_Status
6865WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006866(
Jeff Johnson295189b2012-06-20 16:38:30 -07006867 WDI_ControlBlockType* pWDICtx,
6868 WDI_EventInfoType* pEventData
6869)
6870{
6871 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6872 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006873 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006874 wpt_uint16 usDataOffset = 0;
6875 wpt_uint16 usSendSize = 0;
6876 wpt_uint8 i = 0;
6877
6878 tHalInitScanReqMsg halInitScanReqMsg;
6879
Jeff Johnsone7245742012-09-05 17:12:55 -07006880 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 * It shold be removed once host and riva changes are in sync*/
6882 tHalInitScanConReqMsg halInitScanConReqMsg;
6883
6884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6885
6886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006888 -------------------------------------------------------------------------*/
6889 if (( NULL == pEventData ) ||
6890 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6891 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6892 {
6893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006897 }
6898
6899#if 0
6900 wpalMutexAcquire(&pWDICtx->wptMutex);
6901 /*-----------------------------------------------------------------------
6902 Check to see if SCAN is already in progress - if so reject the req
6903 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006904 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006905 -----------------------------------------------------------------------*/
6906 if ( pWDICtx->bScanInProgress )
6907 {
6908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6909 "Scan is already in progress - subsequent scan is not allowed"
6910 " until the first scan completes");
6911
6912 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006913 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006914 }
6915
Jeff Johnsone7245742012-09-05 17:12:55 -07006916 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6917 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006918
6919 wpalMutexRelease(&pWDICtx->wptMutex);
6920#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08006921 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006922 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006923 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 * It shold be removed once host and riva changes are in sync*/
6925 /*-----------------------------------------------------------------------
6926 Get message buffer
6927 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006928 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006929 sizeof(halInitScanConReqMsg.initScanParams),
6930 &pSendBuffer, &usDataOffset, &usSendSize))||
6931 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6932 {
6933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6934 "Unable to get send buffer in init scan req %x %x %x",
6935 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006938 }
6939
6940
6941 /*-----------------------------------------------------------------------
6942 Fill in the message
6943 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006944 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006945 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6946
6947 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6948 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6949
Jeff Johnsone7245742012-09-05 17:12:55 -07006950 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006951 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006952 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006953 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006954 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006955 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6956
6957 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6958 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6959
Jeff Johnson295189b2012-06-20 16:38:30 -07006960 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6961 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07006962
Jeff Johnsone7245742012-09-05 17:12:55 -07006963 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6965
6966 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6967 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006968 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006969 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6970 }
6971
Jeff Johnsone7245742012-09-05 17:12:55 -07006972 wpalMemoryCopy( pSendBuffer+usDataOffset,
6973 &halInitScanConReqMsg.initScanParams,
6974 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006975 }
6976 else
6977 {
6978 /*-----------------------------------------------------------------------
6979 Get message buffer
6980 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006982 sizeof(halInitScanReqMsg.initScanParams),
6983 &pSendBuffer, &usDataOffset, &usSendSize))||
6984 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6985 {
6986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6987 "Unable to get send buffer in init scan req %x %x %x",
6988 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006991 }
6992
6993
6994 /*-----------------------------------------------------------------------
6995 Fill in the message
6996 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006997 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006998 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6999
7000 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7001 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7002
Jeff Johnsone7245742012-09-05 17:12:55 -07007003 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007004 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007005 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007006 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007007 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007008 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7009
7010 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7011 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7012
Jeff Johnsone7245742012-09-05 17:12:55 -07007013 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007014 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7015
7016 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7017 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007018 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007019 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7020 }
7021
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 wpalMemoryCopy( pSendBuffer+usDataOffset,
7023 &halInitScanReqMsg.initScanParams,
7024 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007025 }
7026
7027 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007028 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007029
7030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007031 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007032 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007034 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7035
7036}/*WDI_ProcessInitScanReq*/
7037
7038/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007039 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007040 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007041
7042 @param pWDICtx: pointer to the WLAN DAL context
7043 pEventData: pointer to the event information structure
7044
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 @see
7046 @return Result of the function call
7047*/
7048WDI_Status
7049WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007050(
Jeff Johnson295189b2012-06-20 16:38:30 -07007051 WDI_ControlBlockType* pWDICtx,
7052 WDI_EventInfoType* pEventData
7053)
7054{
7055 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7056 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007057 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007058 wpt_uint16 usDataOffset = 0;
7059 wpt_uint16 usSendSize = 0;
7060
Jeff Johnsone7245742012-09-05 17:12:55 -07007061 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7063
7064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007065 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007066 -------------------------------------------------------------------------*/
7067 if (( NULL == pEventData ) ||
7068 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7069 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7070 {
7071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007075 }
7076
7077#if 0
7078 wpalMutexAcquire(&pWDICtx->wptMutex);
7079 /*-----------------------------------------------------------------------
7080 Check to see if SCAN is already in progress - start scan is only
7081 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007082 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007083 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007084 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7086 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7087 {
7088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7089 "Scan start not allowed in this state %d %d",
7090 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007091
Jeff Johnson295189b2012-06-20 16:38:30 -07007092 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007093 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007094 }
7095
Jeff Johnsone7245742012-09-05 17:12:55 -07007096 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007097
7098 wpalMutexRelease(&pWDICtx->wptMutex);
7099#endif
7100
7101 /*-----------------------------------------------------------------------
7102 Get message buffer
7103 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007104 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007105 sizeof(halStartScanReqMsg.startScanParams),
7106 &pSendBuffer, &usDataOffset, &usSendSize))||
7107 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7108 {
7109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7110 "Unable to get send buffer in start scan req %x %x %x",
7111 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007114 }
7115
Jeff Johnsone7245742012-09-05 17:12:55 -07007116 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007117 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007118 wpalMemoryCopy( pSendBuffer+usDataOffset,
7119 &halStartScanReqMsg.startScanParams,
7120 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007121
7122 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007123 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007124
7125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007126 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007127 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007128 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007129 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7130}/*WDI_ProcessStartScanReq*/
7131
7132
7133/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007134 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007135 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007136
7137 @param pWDICtx: pointer to the WLAN DAL context
7138 pEventData: pointer to the event information structure
7139
Jeff Johnson295189b2012-06-20 16:38:30 -07007140 @see
7141 @return Result of the function call
7142*/
7143WDI_Status
7144WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007145(
Jeff Johnson295189b2012-06-20 16:38:30 -07007146 WDI_ControlBlockType* pWDICtx,
7147 WDI_EventInfoType* pEventData
7148)
7149{
7150 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7151 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007152 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007153 wpt_uint16 usDataOffset = 0;
7154 wpt_uint16 usSendSize = 0;
7155
Jeff Johnsone7245742012-09-05 17:12:55 -07007156 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7158
7159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 -------------------------------------------------------------------------*/
7162 if (( NULL == pEventData ) ||
7163 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7164 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7165 {
7166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007167 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007170 }
7171
Jeff Johnsone7245742012-09-05 17:12:55 -07007172 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7173 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 * forwarded to HAL and result in hang*/
7175#if 0
7176 wpalMutexAcquire(&pWDICtx->wptMutex);
7177 /*-----------------------------------------------------------------------
7178 Check to see if SCAN is already in progress - end scan is only
7179 allowed when a scan is ongoing and the state of the scan procedure
7180 is started
7181 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007182 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007183 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7184 {
7185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7186 "End start not allowed in this state %d %d",
7187 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007188
Jeff Johnson295189b2012-06-20 16:38:30 -07007189 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007190 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007191 }
7192
Jeff Johnsone7245742012-09-05 17:12:55 -07007193 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007194
7195 wpalMutexRelease(&pWDICtx->wptMutex);
7196#endif
7197
7198 /*-----------------------------------------------------------------------
7199 Get message buffer
7200 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007201 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007202 sizeof(halEndScanReqMsg.endScanParams),
7203 &pSendBuffer, &usDataOffset, &usSendSize))||
7204 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7205 {
7206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7207 "Unable to get send buffer in start scan req %x %x %x",
7208 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007211 }
7212
7213 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7214
Jeff Johnsone7245742012-09-05 17:12:55 -07007215 wpalMemoryCopy( pSendBuffer+usDataOffset,
7216 &halEndScanReqMsg.endScanParams,
7217 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007218
7219 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007221
7222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007223 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007224 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007225 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007226 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7227}/*WDI_ProcessEndScanReq*/
7228
7229
7230/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007231 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007232 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007233
7234 @param pWDICtx: pointer to the WLAN DAL context
7235 pEventData: pointer to the event information structure
7236
Jeff Johnson295189b2012-06-20 16:38:30 -07007237 @see
7238 @return Result of the function call
7239*/
7240WDI_Status
7241WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007242(
Jeff Johnson295189b2012-06-20 16:38:30 -07007243 WDI_ControlBlockType* pWDICtx,
7244 WDI_EventInfoType* pEventData
7245)
7246{
7247 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7248 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007250 wpt_uint16 usDataOffset = 0;
7251 wpt_uint16 usSendSize = 0;
7252 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007253 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7256
7257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007259 -------------------------------------------------------------------------*/
7260 if (( NULL == pEventData ) ||
7261 ( NULL == pEventData->pEventData) ||
7262 ( NULL == pEventData->pCBfnc))
7263 {
7264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007268 }
7269
7270 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7271 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007272 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7273 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 * forwarded to HAL and result in hang*/
7275#if 0
7276 wpalMutexAcquire(&pWDICtx->wptMutex);
7277 /*-----------------------------------------------------------------------
7278 Check to see if SCAN is already in progress
7279 Finish scan gets invoked any scan states. ie. abort scan
7280 It should be allowed in any states.
7281 -----------------------------------------------------------------------*/
7282 if ( !pWDICtx->bScanInProgress )
7283 {
7284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7285 "Finish start not allowed in this state %d",
7286 pWDICtx->bScanInProgress );
7287
7288 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007290 }
7291
7292 /*-----------------------------------------------------------------------
7293 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007294 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007295 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007296 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7297 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 wpalMutexRelease(&pWDICtx->wptMutex);
7299#endif
7300
7301 if ( pWDICtx->bInBmps )
7302 {
7303 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007304 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7305 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7306 {
7307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7308 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7309 WDI_ASSERT(0);
7310 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 }
7312
7313 /*-----------------------------------------------------------------------
7314 Get message buffer
7315 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 sizeof(halFinishScanReqMsg.finishScanParams),
7318 &pSendBuffer, &usDataOffset, &usSendSize))||
7319 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7320 {
7321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7322 "Unable to get send buffer in start scan req %x %x %x",
7323 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007326 }
7327
Jeff Johnsone7245742012-09-05 17:12:55 -07007328 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007329 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7330
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7333
Jeff Johnsone7245742012-09-05 17:12:55 -07007334 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007335 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7336
7337 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7338 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7339
Jeff Johnsone7245742012-09-05 17:12:55 -07007340 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007341 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007342 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007344 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007345 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7346
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7349
7350 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7351 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007352 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007353 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7354 }
7355
7356 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7357 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7358
Jeff Johnsone7245742012-09-05 17:12:55 -07007359 wpalMemoryCopy( pSendBuffer+usDataOffset,
7360 &halFinishScanReqMsg.finishScanParams,
7361 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007362
7363 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007364 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007365
7366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007369 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007370 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7371}/*WDI_ProcessFinishScanReq*/
7372
7373
7374/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007376==========================================================================*/
7377/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007378 @brief Process BSS Join for a given Session
7379
7380 @param pWDICtx: pointer to the WLAN DAL context
7381 pEventData: pointer to the event information structure
7382
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 @see
7384 @return Result of the function call
7385*/
7386WDI_Status
7387WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007388(
Jeff Johnson295189b2012-06-20 16:38:30 -07007389 WDI_ControlBlockType* pWDICtx,
7390 WDI_JoinReqParamsType* pwdiJoinParams,
7391 WDI_JoinRspCb wdiJoinRspCb,
7392 void* pUserData
7393)
7394{
7395 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007396 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007397 wpt_uint16 usDataOffset = 0;
7398 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007399 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007400
Jeff Johnsone7245742012-09-05 17:12:55 -07007401 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7403
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007404 wpalMutexAcquire(&pWDICtx->wptMutex);
7405
Jeff Johnson295189b2012-06-20 16:38:30 -07007406 /*------------------------------------------------------------------------
7407 Check to see if we have any session with this BSSID already stored, we
7408 should not
7409 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007410 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7411 pwdiJoinParams->wdiReqInfo.macBSSID,
7412 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007413
7414 if ( NULL != pBSSSes )
7415 {
7416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007417 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7418 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007419
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007420 /*reset the bAssociationInProgress otherwise the next
7421 *join request will be queued*/
7422 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7423 wpalMutexRelease(&pWDICtx->wptMutex);
7424 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007425 }
7426
Jeff Johnson295189b2012-06-20 16:38:30 -07007427 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 if ( NULL == pBSSSes )
7432 {
7433
7434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7435 "DAL has no free sessions - cannot run another join");
7436
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007437 /*reset the bAssociationInProgress otherwise the next
7438 *join request will be queued*/
7439 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007440 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007441 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007442 }
7443
7444 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007445 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7446 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007447 WDI_MAC_ADDR_LEN);
7448
7449 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007452
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 wpalMutexRelease(&pWDICtx->wptMutex);
7454
7455 /*-----------------------------------------------------------------------
7456 Get message buffer
7457 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007458 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 sizeof(halJoinReqMsg.joinReqParams),
7460 &pSendBuffer, &usDataOffset, &usSendSize))||
7461 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7462 {
7463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7464 "Unable to get send buffer in join req %x %x %x",
7465 pUserData, pwdiJoinParams, wdiJoinRspCb);
7466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 }
7469
7470 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007471 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007472
7473 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007474 pwdiJoinParams->wdiReqInfo.macSTASelf,
7475 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007476
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7479
7480 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7481
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007482#ifdef WLAN_FEATURE_VOWIFI
7483 halJoinReqMsg.joinReqParams.maxTxPower =
7484 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7485#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007486 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7488#endif
7489
Jeff Johnsone7245742012-09-05 17:12:55 -07007490 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7492 wdiSecondaryChannelOffset);
7493
Jeff Johnsone7245742012-09-05 17:12:55 -07007494 wpalMemoryCopy( pSendBuffer+usDataOffset,
7495 &halJoinReqMsg.joinReqParams,
7496 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007497
7498 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007499 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007500
7501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7505 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007506
7507}/*WDI_ProcessBSSSessionJoinReq*/
7508
7509/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007510 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007512
7513 @param pWDICtx: pointer to the WLAN DAL context
7514 pEventData: pointer to the event information structure
7515
Jeff Johnson295189b2012-06-20 16:38:30 -07007516 @see
7517 @return Result of the function call
7518*/
7519WDI_Status
7520WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007521(
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 WDI_ControlBlockType* pWDICtx,
7523 WDI_EventInfoType* pEventData
7524)
7525{
7526 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7527 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7528 WDI_JoinRspCb wdiJoinRspCb = NULL;
7529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7530
7531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007533 -------------------------------------------------------------------------*/
7534 if (( NULL == pEventData ) ||
7535 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7536 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7537 {
7538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007543
Jeff Johnson295189b2012-06-20 16:38:30 -07007544 /*-------------------------------------------------------------------------
7545 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007546 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007547 -------------------------------------------------------------------------*/
7548 wpalMutexAcquire(&pWDICtx->wptMutex);
7549
7550 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7551 {
7552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7553 "Association is currently in progress, queueing new join req");
7554
7555 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007556 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007557 pwdiJoinParams->wdiReqInfo.macBSSID);
7558
7559 wpalMutexRelease(&pWDICtx->wptMutex);
7560
Jeff Johnsone7245742012-09-05 17:12:55 -07007561 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007562 }
7563
7564 /*Starting a new association */
7565 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7566 wpalMutexRelease(&pWDICtx->wptMutex);
7567
7568 /*Process the Join Request*/
7569 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7570 wdiJoinRspCb,pEventData->pUserData);
7571
7572}/*WDI_ProcessJoinReq*/
7573
7574
7575/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007576 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007577 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007578
7579 @param pWDICtx: pointer to the WLAN DAL context
7580 pEventData: pointer to the event information structure
7581
Jeff Johnson295189b2012-06-20 16:38:30 -07007582 @see
7583 @return Result of the function call
7584*/
7585WDI_Status
7586WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007587(
Jeff Johnson295189b2012-06-20 16:38:30 -07007588 WDI_ControlBlockType* pWDICtx,
7589 WDI_EventInfoType* pEventData
7590)
7591{
7592 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7593 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007594 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007595 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007596 wpt_uint16 uMsgSize = 0;
7597 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007598 wpt_uint16 usDataOffset = 0;
7599 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007600 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007601
Jeff Johnsone7245742012-09-05 17:12:55 -07007602 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7604
7605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007607 -------------------------------------------------------------------------*/
7608 if (( NULL == pEventData ) ||
7609 ( NULL == pEventData->pEventData ) ||
7610 ( NULL == pEventData->pCBfnc ))
7611 {
7612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007616 }
7617
7618 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7619 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7620 /*-------------------------------------------------------------------------
7621 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007622 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007623 -------------------------------------------------------------------------*/
7624 wpalMutexAcquire(&pWDICtx->wptMutex);
7625
7626 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007627 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007628 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007629 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7630 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7631 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007632
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 {
7635#ifdef WLAN_FEATURE_VOWIFI_11R
7636 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007637 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007639 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 if ( NULL == pBSSSes )
7641 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007642
Jeff Johnson295189b2012-06-20 16:38:30 -07007643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7644 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007645
Jeff Johnson295189b2012-06-20 16:38:30 -07007646 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007647 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007648 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007649
Jeff Johnson295189b2012-06-20 16:38:30 -07007650 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007651 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7652 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007654
Jeff Johnson295189b2012-06-20 16:38:30 -07007655 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007656 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007657 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7658#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 * Request in case of IBSS*/
7661 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7662 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7663 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7664 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7665 {
7666 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007667 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007669 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007670 if ( NULL == pBSSSes )
7671 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007672
Jeff Johnson295189b2012-06-20 16:38:30 -07007673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7674 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007675
Jeff Johnson295189b2012-06-20 16:38:30 -07007676 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007677 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007678 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007679
Jeff Johnson295189b2012-06-20 16:38:30 -07007680 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007681 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7682 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007683 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007684
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007686 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007687 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7688 }
7689 else
7690 {
7691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007692 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7693 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7694 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7695
Jeff Johnson295189b2012-06-20 16:38:30 -07007696 /* for IBSS testing */
7697 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 }
7700#endif
7701 }
7702
7703 /*------------------------------------------------------------------------
7704 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007706 ------------------------------------------------------------------------*/
7707 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7708 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7710 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7711 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7712 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007713
Jeff Johnsone7245742012-09-05 17:12:55 -07007714 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007715
7716 wpalMutexRelease(&pWDICtx->wptMutex);
7717
Jeff Johnsone7245742012-09-05 17:12:55 -07007718 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007719 }
7720
7721 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7723 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007724 sizeof(pWDICtx->wdiCachedConfigBssReq));
7725
7726 wpalMutexRelease(&pWDICtx->wptMutex);
7727
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7729#ifdef WLAN_FEATURE_11AC
7730 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007731 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007732 else
7733#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007734 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007735
7736 /*-----------------------------------------------------------------------
7737 Get message buffer
7738 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007740 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7741 ( usSendSize < (usDataOffset + uMsgSize )))
7742 {
7743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7744 "Unable to get send buffer in config bss req %x %x %x",
7745 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007748 }
7749
7750 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007751#ifdef WLAN_FEATURE_11AC
7752 if (WDI_getFwWlanFeatCaps(DOT11AC))
7753 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7754 &pwdiConfigBSSParams->wdiReqInfo);
7755 else
7756#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007757 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007758 &pwdiConfigBSSParams->wdiReqInfo);
7759
7760 /* Need to fill in the STA Index to invalid, since at this point we have not
7761 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007762 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007763
7764 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7766
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007767#ifdef WLAN_FEATURE_11AC
7768 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7769 wpalMemoryCopy( pSendBuffer+usDataOffset,
7770 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7771 uMsgSize);
7772 }else
7773#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007774 {
7775 if ( uMsgSize <= sizeof(tConfigBssParams) )
7776 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07007777 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007778 &halConfigBssReqMsg.uBssParams.configBssParams,
7779 uMsgSize);
7780 }
7781 else
7782 {
7783 return WDI_STATUS_E_FAILURE;
7784 }
7785 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007786
7787 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007789
7790 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007791 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7794 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 WDI_CONFIG_BSS_RESP);
7796
7797}/*WDI_ProcessConfigBSSReq*/
7798
7799
7800/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007801 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007802 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007803
7804 @param pWDICtx: pointer to the WLAN DAL context
7805 pEventData: pointer to the event information structure
7806
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 @see
7808 @return Result of the function call
7809*/
7810WDI_Status
7811WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007812(
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 WDI_ControlBlockType* pWDICtx,
7814 WDI_EventInfoType* pEventData
7815)
7816{
7817 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7818 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007819 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 wpt_uint16 usDataOffset = 0;
7823 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007824 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007825
Jeff Johnsone7245742012-09-05 17:12:55 -07007826 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7828
7829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 -------------------------------------------------------------------------*/
7832 if (( NULL == pEventData ) ||
7833 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7834 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7835 {
7836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007837 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007840 }
7841
7842 /*-------------------------------------------------------------------------
7843 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007844 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 -------------------------------------------------------------------------*/
7846 wpalMutexAcquire(&pWDICtx->wptMutex);
7847
7848 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007849 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007851 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7852 pwdiDelBSSParams->ucBssIdx,
7853 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007854
Jeff Johnsone7245742012-09-05 17:12:55 -07007855 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 {
7857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007858 "%s: BSS does not yet exist. ucBssIdx %d",
7859 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007860
7861 wpalMutexRelease(&pWDICtx->wptMutex);
7862
7863 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007864 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007865
7866 /*------------------------------------------------------------------------
7867 Check if this BSS is being currently processed or queued,
7868 if queued - queue the new request as well
7869 ------------------------------------------------------------------------*/
7870 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7873 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7874 __func__, pwdiDelBSSParams->ucBssIdx);
7875
7876 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7877
7878 wpalMutexRelease(&pWDICtx->wptMutex);
7879
7880 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007881 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007882
Jeff Johnson295189b2012-06-20 16:38:30 -07007883 /*-----------------------------------------------------------------------
7884 If we receive a Del BSS request for an association that is already in
7885 progress, it indicates that the assoc has failed => we no longer have
7886 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007887 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007888 -----------------------------------------------------------------------*/
7889 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7890 {
7891 /*We can switch to false here because even if a subsequent Join comes in
7892 it will only be processed when DAL transitions out of BUSY state which
7893 happens when the Del BSS request comes */
7894 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7895
7896 /*Former association is complete - prepare next pending assoc for
7897 processing */
7898 WDI_DequeueAssocRequest(pWDICtx);
7899 }
7900
7901 wpalMutexRelease(&pWDICtx->wptMutex);
7902 /*-----------------------------------------------------------------------
7903 Get message buffer
7904 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 sizeof(halBssReqMsg.deleteBssParams),
7907 &pSendBuffer, &usDataOffset, &usSendSize))||
7908 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7909 {
7910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7911 "Unable to get send buffer in start req %x %x %x",
7912 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007915 }
7916
7917 /*Fill in the message request structure*/
7918
7919 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007920 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007921
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 wpalMemoryCopy( pSendBuffer+usDataOffset,
7923 &halBssReqMsg.deleteBssParams,
7924 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007925
7926 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007927 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007928
Jeff Johnsone7245742012-09-05 17:12:55 -07007929
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007931 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007932 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007933 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007934 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7935
Jeff Johnsone7245742012-09-05 17:12:55 -07007936
Jeff Johnson295189b2012-06-20 16:38:30 -07007937}/*WDI_ProcessDelBSSReq*/
7938
7939/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007941 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007942
7943 @param pWDICtx: pointer to the WLAN DAL context
7944 pEventData: pointer to the event information structure
7945
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 @see
7947 @return Result of the function call
7948*/
7949WDI_Status
7950WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007951(
Jeff Johnson295189b2012-06-20 16:38:30 -07007952 WDI_ControlBlockType* pWDICtx,
7953 WDI_EventInfoType* pEventData
7954)
7955{
7956 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7957 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007960 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007961 wpt_uint16 usDataOffset = 0;
7962 wpt_uint16 usSendSize = 0;
7963 wpt_uint16 uMsgSize = 0;
7964 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007966
Jeff Johnsone7245742012-09-05 17:12:55 -07007967 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7969
7970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007972 -------------------------------------------------------------------------*/
7973 if (( NULL == pEventData ) ||
7974 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7975 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7976 {
7977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007981 }
7982
7983 /*-------------------------------------------------------------------------
7984 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007985 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007986 -------------------------------------------------------------------------*/
7987 wpalMutexAcquire(&pWDICtx->wptMutex);
7988
7989 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007990 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007992 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7993 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7994 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007995
7996 if ( NULL == pBSSSes )
7997 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7999 "%s: Association sequence for this BSS does not yet exist - "
8000 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8001 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008002
8003 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008005 }
8006
8007 /*------------------------------------------------------------------------
8008 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008009 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008010 ------------------------------------------------------------------------*/
8011 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8012 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8014 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8015 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008016
Jeff Johnsone7245742012-09-05 17:12:55 -07008017 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008018
8019 wpalMutexRelease(&pWDICtx->wptMutex);
8020
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008022 }
8023
8024 /*-----------------------------------------------------------------------
8025 If Post Assoc was not yet received - the current association must
8026 be in progress
8027 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8030 {
8031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8032 "Association sequence for this BSS association no longer in "
8033 "progress - not allowed");
8034
8035 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 }
8038
8039 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008040 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008041 -----------------------------------------------------------------------*/
8042 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8043 {
8044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8045 "Post Assoc not allowed before JOIN - failing request");
8046
8047 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 }
8050
8051 wpalMutexRelease(&pWDICtx->wptMutex);
8052
8053 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8054 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8055 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8060 ( usSendSize < (usDataOffset + uMsgSize )))
8061 {
8062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8063 "Unable to get send buffer in start req %x %x %x",
8064 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 }
8068
8069 /*Copy the STA parameters */
8070 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8071 &pwdiPostAssocParams->wdiSTAParams );
8072
8073 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008074 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008075 WDI_STATableFindStaidByAddr(pWDICtx,
8076 pwdiPostAssocParams->wdiSTAParams.macSTA,
8077 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8078 {
8079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8080 "This station does not exist in the WDI Station Table %d");
8081 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008082 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 }
8085
8086 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 pBSSSes->ucBSSIdx;
8089
8090 /*Copy the BSS parameters */
8091 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8092 &pwdiPostAssocParams->wdiBSSParams);
8093
8094 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008095 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008096 WDI_STATableFindStaidByAddr(pWDICtx,
8097 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008098 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008099 {
8100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8101 "This station does not exist in the WDI Station Table %d");
8102 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008103 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 }
8106
8107 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008108 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 pBSSSes->ucBSSIdx;
8110
Jeff Johnsone7245742012-09-05 17:12:55 -07008111
8112 wpalMemoryCopy( pSendBuffer+usDataOffset,
8113 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8114 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008115
8116 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8117
Jeff Johnsone7245742012-09-05 17:12:55 -07008118 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8119 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8120 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008121
Jeff Johnsone7245742012-09-05 17:12:55 -07008122
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008125
Jeff Johnsone7245742012-09-05 17:12:55 -07008126
8127 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008128 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008129 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008130
8131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008132 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008133 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008135 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8136
Jeff Johnsone7245742012-09-05 17:12:55 -07008137
Jeff Johnson295189b2012-06-20 16:38:30 -07008138}/*WDI_ProcessPostAssocReq*/
8139
8140/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008141 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008143
8144 @param pWDICtx: pointer to the WLAN DAL context
8145 pEventData: pointer to the event information structure
8146
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 @see
8148 @return Result of the function call
8149*/
8150WDI_Status
8151WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008152(
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 WDI_ControlBlockType* pWDICtx,
8154 WDI_EventInfoType* pEventData
8155)
8156{
8157 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8158 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008161 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008162 wpt_uint16 usDataOffset = 0;
8163 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008164 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008165 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8166
Jeff Johnsone7245742012-09-05 17:12:55 -07008167 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8169
8170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008172 -------------------------------------------------------------------------*/
8173 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8174 ( NULL == pEventData->pCBfnc ))
8175 {
8176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 }
8181
8182 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8183 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8184 /*-------------------------------------------------------------------------
8185 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008187 -------------------------------------------------------------------------*/
8188 wpalMutexAcquire(&pWDICtx->wptMutex);
8189
8190 /*------------------------------------------------------------------------
8191 Find the BSS for which the request is made and identify WDI session
8192 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8194 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 &macBSSID))
8196 {
8197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8198 "This station does not exist in the WDI Station Table %d");
8199 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 }
8202
Jeff Johnsone7245742012-09-05 17:12:55 -07008203 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8204 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008205 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8207 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8208 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008209
8210 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008211 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008212 }
8213
8214 /*------------------------------------------------------------------------
8215 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008216 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008217 ------------------------------------------------------------------------*/
8218 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8219 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8221 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8222 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008223
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008226 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008227 }
8228
8229 wpalMutexRelease(&pWDICtx->wptMutex);
8230 /*-----------------------------------------------------------------------
8231 Get message buffer
8232 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 sizeof(halDelStaReqMsg.delStaParams),
8235 &pSendBuffer, &usDataOffset, &usSendSize))||
8236 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8237 {
8238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8239 "Unable to get send buffer in start req %x %x %x",
8240 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8241 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
Jeff Johnsone7245742012-09-05 17:12:55 -07008245 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8246 wpalMemoryCopy( pSendBuffer+usDataOffset,
8247 &halDelStaReqMsg.delStaParams,
8248 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008249
8250 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008251 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008252
8253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008254 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008256 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008257 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8258
8259}/*WDI_ProcessDelSTAReq*/
8260
8261
8262/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008263 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008264==========================================================================*/
8265/**
8266 @brief Process Set BSS Key Request function (called when Main FSM
8267 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008268
8269 @param pWDICtx: pointer to the WLAN DAL context
8270 pEventData: pointer to the event information structure
8271
Jeff Johnson295189b2012-06-20 16:38:30 -07008272 @see
8273 @return Result of the function call
8274*/
8275WDI_Status
8276WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008277(
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 WDI_ControlBlockType* pWDICtx,
8279 WDI_EventInfoType* pEventData
8280)
8281{
8282 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8283 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008284 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008286 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008287 wpt_uint16 usDataOffset = 0;
8288 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008289 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8291 wpt_uint8 keyIndex = 0;
8292
8293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8294
8295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 -------------------------------------------------------------------------*/
8298 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8299 ( NULL == pEventData->pCBfnc ))
8300 {
8301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008302 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008303 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008305 }
8306
8307 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8308 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8309 /*-------------------------------------------------------------------------
8310 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008312 -------------------------------------------------------------------------*/
8313 wpalMutexAcquire(&pWDICtx->wptMutex);
8314
8315 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008318 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8319 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8320 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008321
Jeff Johnsone7245742012-09-05 17:12:55 -07008322 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008323 {
8324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008325 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8326 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008327
8328 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008330 }
8331
8332 /*------------------------------------------------------------------------
8333 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008335 ------------------------------------------------------------------------*/
8336 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8337 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8339 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8340 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008341
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008344 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008345 }
8346
8347
8348 wpalMutexRelease(&pWDICtx->wptMutex);
8349 /*-----------------------------------------------------------------------
8350 Get message buffer
8351 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008352 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8354 &pSendBuffer, &usDataOffset, &usSendSize))||
8355 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8356 {
8357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8358 "Unable to get send buffer in set bss key req %x %x %x",
8359 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 }
8363
8364 /*-----------------------------------------------------------------------
8365 Copy the Key parameters into the HAL message
8366 -----------------------------------------------------------------------*/
8367
Jeff Johnsone7245742012-09-05 17:12:55 -07008368 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008369
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008371 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8372
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8375
8376 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8377 keyIndex++)
8378 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8381 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8382 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8383 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8384 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8385 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008388 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008389 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8392 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008393 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008394 WDI_MAX_KEY_LENGTH);
8395 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008396
8397 wpalMemoryCopy( pSendBuffer+usDataOffset,
8398 &halSetBssKeyReqMsg.setBssKeyParams,
8399 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008400
8401 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008402 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008403
8404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008405 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8408 wdiSetBSSKeyRspCb, pEventData->pUserData,
8409 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008410
8411}/*WDI_ProcessSetBssKeyReq*/
8412
8413/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008414 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008416
8417 @param pWDICtx: pointer to the WLAN DAL context
8418 pEventData: pointer to the event information structure
8419
Jeff Johnson295189b2012-06-20 16:38:30 -07008420 @see
8421 @return Result of the function call
8422*/
8423WDI_Status
8424WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008425(
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 WDI_ControlBlockType* pWDICtx,
8427 WDI_EventInfoType* pEventData
8428)
8429{
8430 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8431 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 wpt_uint16 usDataOffset = 0;
8436 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8440
8441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008443 -------------------------------------------------------------------------*/
8444 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8445 ( NULL == pEventData->pCBfnc ))
8446 {
8447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008451 }
8452
8453 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8454 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8455 /*-------------------------------------------------------------------------
8456 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008457 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008458 -------------------------------------------------------------------------*/
8459 wpalMutexAcquire(&pWDICtx->wptMutex);
8460
8461 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008464 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8465 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8466 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008467
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 {
8470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008471 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8472 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008473
8474 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008475 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 }
8477
8478 /*------------------------------------------------------------------------
8479 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008480 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 ------------------------------------------------------------------------*/
8482 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8483 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8485 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8486 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008487
Jeff Johnsone7245742012-09-05 17:12:55 -07008488 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008490 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008491 }
8492
8493
8494 wpalMutexRelease(&pWDICtx->wptMutex);
8495
8496 /*-----------------------------------------------------------------------
8497 Get message buffer
8498 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008499 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008500 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8501 &pSendBuffer, &usDataOffset, &usSendSize))||
8502 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8503 {
8504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8505 "Unable to get send buffer in set bss key req %x %x %x",
8506 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008509 }
8510 /*-----------------------------------------------------------------------
8511 Copy the Key parameters into the HAL message
8512 -----------------------------------------------------------------------*/
8513 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8514
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8517
8518 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8519
Jeff Johnsone7245742012-09-05 17:12:55 -07008520 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008521 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8522
Jeff Johnsone7245742012-09-05 17:12:55 -07008523 wpalMemoryCopy( pSendBuffer+usDataOffset,
8524 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8525 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008526
8527 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008529
8530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008536}/*WDI_ProcessRemoveBssKeyReq*/
8537
8538/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008539 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008540 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008541
8542 @param pWDICtx: pointer to the WLAN DAL context
8543 pEventData: pointer to the event information structure
8544
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 @see
8546 @return Result of the function call
8547*/
8548WDI_Status
8549WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008550(
Jeff Johnson295189b2012-06-20 16:38:30 -07008551 WDI_ControlBlockType* pWDICtx,
8552 WDI_EventInfoType* pEventData
8553)
8554{
8555 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8556 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8557 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 wpt_uint16 usDataOffset = 0;
8560 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008561 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008562 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8565 wpt_uint8 keyIndex = 0;
8566
8567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8568
8569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 -------------------------------------------------------------------------*/
8572 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8573 ( NULL == pEventData->pCBfnc ))
8574 {
8575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008579 }
8580
8581 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8582 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8583 /*-------------------------------------------------------------------------
8584 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008585 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 -------------------------------------------------------------------------*/
8587 wpalMutexAcquire(&pWDICtx->wptMutex);
8588
8589 /*------------------------------------------------------------------------
8590 Find the BSS for which the request is made and identify WDI session
8591 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8593 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 &macBSSID))
8595 {
8596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8597 "This station does not exist in the WDI Station Table %d");
8598 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 }
8601
Jeff Johnsone7245742012-09-05 17:12:55 -07008602 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8603 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8606 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8607 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008608
8609 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008611 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008612
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 /*------------------------------------------------------------------------
8614 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008615 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008616 ------------------------------------------------------------------------*/
8617 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8618 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8620 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8621 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008622
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008625 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008626 }
8627
8628
8629 wpalMutexRelease(&pWDICtx->wptMutex);
8630 /*-----------------------------------------------------------------------
8631 Get message buffer
8632 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8635 &pSendBuffer, &usDataOffset, &usSendSize))||
8636 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8637 {
8638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8639 "Unable to get send buffer in set bss key req %x %x %x",
8640 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 }
8644 /*-----------------------------------------------------------------------
8645 Copy the STA Key parameters into the HAL message
8646 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008647 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8649
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8652
8653 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8654
8655 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8656
8657 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8658
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8660 keyIndex++)
8661 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8664 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8665 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8666 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8667 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8668 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008669 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008670 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008671 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008672 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008673 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008674 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8675 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008676 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 WDI_MAX_KEY_LENGTH);
8678 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008679
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 wpalMemoryCopy( pSendBuffer+usDataOffset,
8681 &halSetStaKeyReqMsg.setStaKeyParams,
8682 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008683
8684 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008686
8687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008688 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8691 wdiSetSTAKeyRspCb, pEventData->pUserData,
8692 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008693
8694}/*WDI_ProcessSetSTAKeyReq*/
8695
8696/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008697 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008699
8700 @param pWDICtx: pointer to the WLAN DAL context
8701 pEventData: pointer to the event information structure
8702
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 @see
8704 @return Result of the function call
8705*/
8706WDI_Status
8707WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008708(
Jeff Johnson295189b2012-06-20 16:38:30 -07008709 WDI_ControlBlockType* pWDICtx,
8710 WDI_EventInfoType* pEventData
8711)
8712{
8713 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8714 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8715 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 wpt_uint16 usDataOffset = 0;
8718 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008719 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 wpt_macAddr macBSSID;
8721 wpt_uint8 ucCurrentBSSSesIdx;
8722 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8724
8725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008727 -------------------------------------------------------------------------*/
8728 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8729 ( NULL == pEventData->pCBfnc ))
8730 {
8731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 }
8736
8737 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8738 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8739 /*-------------------------------------------------------------------------
8740 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 -------------------------------------------------------------------------*/
8743 wpalMutexAcquire(&pWDICtx->wptMutex);
8744
8745 /*------------------------------------------------------------------------
8746 Find the BSS for which the request is made and identify WDI session
8747 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8749 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 &macBSSID))
8751 {
8752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8753 "This station does not exist in the WDI Station Table %d");
8754 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 }
8757
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8759 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8762 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8763 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008764
8765 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008768
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 /*------------------------------------------------------------------------
8770 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008772 ------------------------------------------------------------------------*/
8773 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8774 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8776 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8777 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008778
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008781 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 }
8783
8784
8785
8786 wpalMutexRelease(&pWDICtx->wptMutex);
8787 /*-----------------------------------------------------------------------
8788 Get message buffer
8789 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8792 &pSendBuffer, &usDataOffset, &usSendSize))||
8793 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8794 {
8795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8796 "Unable to get send buffer in set bss key req %x %x %x",
8797 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8798 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008800 }
8801
8802 /*-----------------------------------------------------------------------
8803 Copy the Key parameters into the HAL message
8804 -----------------------------------------------------------------------*/
8805
Jeff Johnsone7245742012-09-05 17:12:55 -07008806 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8808
Jeff Johnsone7245742012-09-05 17:12:55 -07008809 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008810 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8811
Jeff Johnsone7245742012-09-05 17:12:55 -07008812 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8814
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8817
Jeff Johnsone7245742012-09-05 17:12:55 -07008818 wpalMemoryCopy( pSendBuffer+usDataOffset,
8819 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8820 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008821
8822 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008824
8825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008826 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008827 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008831
8832}/*WDI_ProcessRemoveSTAKeyReq*/
8833
8834/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008836 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008837
8838 @param pWDICtx: pointer to the WLAN DAL context
8839 pEventData: pointer to the event information structure
8840
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 @see
8842 @return Result of the function call
8843*/
8844WDI_Status
8845WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008846(
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 WDI_ControlBlockType* pWDICtx,
8848 WDI_EventInfoType* pEventData
8849)
8850{
8851 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8852 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8853 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 wpt_uint16 usDataOffset = 0;
8856 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008859 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008860 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8861 wpt_uint8 keyIndex = 0;
8862
8863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8864
8865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008867 -------------------------------------------------------------------------*/
8868 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8869 ( NULL == pEventData->pCBfnc ))
8870 {
8871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008875 }
8876
8877 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8878 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8879 /*-------------------------------------------------------------------------
8880 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008881 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008882 -------------------------------------------------------------------------*/
8883 wpalMutexAcquire(&pWDICtx->wptMutex);
8884
8885 /*------------------------------------------------------------------------
8886 Find the BSS for which the request is made and identify WDI session
8887 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8889 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008890 &macBSSID))
8891 {
8892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8893 "This station does not exist in the WDI Station Table %d");
8894 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008896 }
8897
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8899 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 {
8901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008902 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8903 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008904
8905 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008906 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008907 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008908
Jeff Johnson295189b2012-06-20 16:38:30 -07008909 /*------------------------------------------------------------------------
8910 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 ------------------------------------------------------------------------*/
8913 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8914 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8916 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8917 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008918
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008922 }
8923
8924
8925 wpalMutexRelease(&pWDICtx->wptMutex);
8926 /*-----------------------------------------------------------------------
8927 Get message buffer
8928 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8931 &pSendBuffer, &usDataOffset, &usSendSize))||
8932 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8933 {
8934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8935 "Unable to get send buffer in set bss key req %x %x %x",
8936 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 }
8940 /*-----------------------------------------------------------------------
8941 Copy the STA Key parameters into the HAL message
8942 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008943 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008944 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8945
Jeff Johnsone7245742012-09-05 17:12:55 -07008946 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008947 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8948
8949 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8950
8951 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8952
8953 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8954
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8956 keyIndex++)
8957 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008958 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008959 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8960 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8961 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8962 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8963 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8964 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008967 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008968 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008970 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8971 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008972 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 WDI_MAX_KEY_LENGTH);
8974 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008975
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 wpalMemoryCopy( pSendBuffer+usDataOffset,
8977 &halSetStaKeyReqMsg.setStaKeyParams,
8978 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008979
8980 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008982
8983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008986 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8987 wdiSetSTAKeyRspCb, pEventData->pUserData,
8988 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008989
8990}/*WDI_ProcessSetSTABcastKeyReq*/
8991
8992/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008995
8996 @param pWDICtx: pointer to the WLAN DAL context
8997 pEventData: pointer to the event information structure
8998
Jeff Johnson295189b2012-06-20 16:38:30 -07008999 @see
9000 @return Result of the function call
9001*/
9002WDI_Status
9003WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009004(
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 WDI_ControlBlockType* pWDICtx,
9006 WDI_EventInfoType* pEventData
9007)
9008{
9009 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9010 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9011 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 wpt_uint16 usDataOffset = 0;
9014 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 wpt_macAddr macBSSID;
9017 wpt_uint8 ucCurrentBSSSesIdx;
9018 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9020
9021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 -------------------------------------------------------------------------*/
9024 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9025 ( NULL == pEventData->pCBfnc ))
9026 {
9027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009028 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009031 }
9032
9033 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9034 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9035 /*-------------------------------------------------------------------------
9036 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 -------------------------------------------------------------------------*/
9039 wpalMutexAcquire(&pWDICtx->wptMutex);
9040
9041 /*------------------------------------------------------------------------
9042 Find the BSS for which the request is made and identify WDI session
9043 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009044 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9045 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009046 &macBSSID))
9047 {
9048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9049 "This station does not exist in the WDI Station Table %d");
9050 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 }
9053
Jeff Johnsone7245742012-09-05 17:12:55 -07009054 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9055 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9058 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9059 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009060
9061 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009063 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009064
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 /*------------------------------------------------------------------------
9066 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 ------------------------------------------------------------------------*/
9069 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9070 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9072 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9073 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009074
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 }
9079
9080
9081
9082 wpalMutexRelease(&pWDICtx->wptMutex);
9083 /*-----------------------------------------------------------------------
9084 Get message buffer
9085 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9088 &pSendBuffer, &usDataOffset, &usSendSize))||
9089 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9090 {
9091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9092 "Unable to get send buffer in set bss key req %x %x %x",
9093 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 }
9097
9098 /*-----------------------------------------------------------------------
9099 Copy the Key parameters into the HAL message
9100 -----------------------------------------------------------------------*/
9101
Jeff Johnsone7245742012-09-05 17:12:55 -07009102 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009103 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9104
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009106 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9107
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009109 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9110
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9113
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 wpalMemoryCopy( pSendBuffer+usDataOffset,
9115 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9116 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009117
9118 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009120
9121 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009123 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009127
9128}/*WDI_ProcessRemoveSTABcastKeyReq*/
9129
9130/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009131 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009132==========================================================================*/
9133/**
9134 @brief Process Add TSpec Request function (called when Main FSM
9135 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009136
9137 @param pWDICtx: pointer to the WLAN DAL context
9138 pEventData: pointer to the event information structure
9139
Jeff Johnson295189b2012-06-20 16:38:30 -07009140 @see
9141 @return Result of the function call
9142*/
9143WDI_Status
9144WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009145(
Jeff Johnson295189b2012-06-20 16:38:30 -07009146 WDI_ControlBlockType* pWDICtx,
9147 WDI_EventInfoType* pEventData
9148)
9149{
9150 WDI_AddTSReqParamsType* pwdiAddTSParams;
9151 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009155 wpt_uint16 usDataOffset = 0;
9156 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009157 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009158 wpt_macAddr macBSSID;
9159 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009160
Jeff Johnson295189b2012-06-20 16:38:30 -07009161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9162
9163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009165 -------------------------------------------------------------------------*/
9166 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9167 ( NULL == pEventData->pCBfnc ))
9168 {
9169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009170 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009173 }
9174
9175 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9176 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9177 /*-------------------------------------------------------------------------
9178 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009179 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009180 -------------------------------------------------------------------------*/
9181 wpalMutexAcquire(&pWDICtx->wptMutex);
9182
9183 /*------------------------------------------------------------------------
9184 Find the BSS for which the request is made and identify WDI session
9185 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009186 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9187 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009188 &macBSSID))
9189 {
9190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9191 "This station does not exist in the WDI Station Table %d");
9192 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009194 }
9195
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9197 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9200 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9201 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009202
9203 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009206
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 /*------------------------------------------------------------------------
9208 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 ------------------------------------------------------------------------*/
9211 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9212 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9214 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9215 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009216
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 }
9221
9222 wpalMutexRelease(&pWDICtx->wptMutex);
9223 /*-----------------------------------------------------------------------
9224 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009227 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9228 sizeof(halAddTsParams),
9229 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009230 &usSendSize))||
9231 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9232 {
9233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9234 "Unable to get send buffer in set bss key req %x %x %x",
9235 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 }
9239
9240 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9241 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9242
9243 //TSPEC IE
9244 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9245 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009247 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009253 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009254 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009256 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009257 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009258 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009259 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009262 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009263 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009266 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009267 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009268 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9276
9277 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009278 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009281 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009285 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009287 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009288 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009289 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9292
9293 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009295 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9298
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 wpalMemoryCopy( pSendBuffer+usDataOffset,
9300 &halAddTsParams,
9301 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009302
9303 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009304 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009305
9306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009307 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009311 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009312}/*WDI_ProcessAddTSpecReq*/
9313
9314
9315/**
9316 @brief Process Del TSpec Request function (called when Main FSM
9317 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009318
9319 @param pWDICtx: pointer to the WLAN DAL context
9320 pEventData: pointer to the event information structure
9321
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 @see
9323 @return Result of the function call
9324*/
9325WDI_Status
9326WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009327(
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 WDI_ControlBlockType* pWDICtx,
9329 WDI_EventInfoType* pEventData
9330)
9331{
9332 WDI_DelTSReqParamsType* pwdiDelTSParams;
9333 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009334 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009337 wpt_uint16 usDataOffset = 0;
9338 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9341
9342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 -------------------------------------------------------------------------*/
9345 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9346 ( NULL == pEventData->pCBfnc ))
9347 {
9348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009352 }
9353
9354 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9355 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9356
9357 /*-------------------------------------------------------------------------
9358 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009360 -------------------------------------------------------------------------*/
9361 wpalMutexAcquire(&pWDICtx->wptMutex);
9362
9363 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9367 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9368 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009369
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9373 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9374 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9375
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 }
9379
9380 /*------------------------------------------------------------------------
9381 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009383 ------------------------------------------------------------------------*/
9384 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9385 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9387 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9388 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009389
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 }
9394
9395
9396 wpalMutexRelease(&pWDICtx->wptMutex);
9397 /*-----------------------------------------------------------------------
9398 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009399 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9403 &pSendBuffer, &usDataOffset, &usSendSize))||
9404 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9405 {
9406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9407 "Unable to get send buffer in set bss key req %x %x %x",
9408 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 }
9412
Jeff Johnsone7245742012-09-05 17:12:55 -07009413 wpalMemoryCopy( pSendBuffer+usDataOffset,
9414 &pwdiDelTSParams->wdiDelTSInfo,
9415 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009416
9417 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009419
9420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9424 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009425}/*WDI_ProcessDelTSpecReq*/
9426
9427/**
9428 @brief Process Update EDCA Params Request function (called when
9429 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009430
9431 @param pWDICtx: pointer to the WLAN DAL context
9432 pEventData: pointer to the event information structure
9433
Jeff Johnson295189b2012-06-20 16:38:30 -07009434 @see
9435 @return Result of the function call
9436*/
9437WDI_Status
9438WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009439(
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 WDI_ControlBlockType* pWDICtx,
9441 WDI_EventInfoType* pEventData
9442)
9443{
9444 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9445 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009446 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009447 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 wpt_uint16 usDataOffset = 0;
9450 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9453
9454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009456 -------------------------------------------------------------------------*/
9457 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9458 ( NULL == pEventData->pCBfnc ))
9459 {
9460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009464 }
9465
9466 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9467 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9468 /*-------------------------------------------------------------------------
9469 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009470 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009471 -------------------------------------------------------------------------*/
9472 wpalMutexAcquire(&pWDICtx->wptMutex);
9473
9474 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9478 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9479 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009480
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009482 {
9483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9485 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009486
9487 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009488 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009489 }
9490
9491 /*------------------------------------------------------------------------
9492 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 ------------------------------------------------------------------------*/
9495 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9496 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9498 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9499 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009500
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009502 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009503 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 }
9505
9506
9507 wpalMutexRelease(&pWDICtx->wptMutex);
9508 /*-----------------------------------------------------------------------
9509 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009513 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9514 &pSendBuffer, &usDataOffset, &usSendSize))||
9515 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9516 {
9517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9518 "Unable to get send buffer in set bss key req %x %x %x",
9519 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 }
9523
Jeff Johnsone7245742012-09-05 17:12:55 -07009524 wpalMemoryCopy( pSendBuffer+usDataOffset,
9525 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9526 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009527
9528 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009530
9531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009533 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009534 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9535 wdiUpdateEDCARspCb, pEventData->pUserData,
9536 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009537}/*WDI_ProcessUpdateEDCAParamsReq*/
9538
9539/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009542
9543 @param pWDICtx: pointer to the WLAN DAL context
9544 pEventData: pointer to the event information structure
9545
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 @see
9547 @return Result of the function call
9548*/
9549WDI_Status
9550WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009551(
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 WDI_ControlBlockType* pWDICtx,
9553 WDI_EventInfoType* pEventData
9554)
9555{
9556 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9557 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 wpt_uint16 usDataOffset = 0;
9562 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 wpt_macAddr macBSSID;
9565
9566 tAddBASessionReqMsg halAddBASessionReq;
9567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9568
9569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 -------------------------------------------------------------------------*/
9572 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9573 ( NULL == pEventData->pCBfnc ))
9574 {
9575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 }
9580
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009583 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9585 /*-------------------------------------------------------------------------
9586 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 -------------------------------------------------------------------------*/
9589 wpalMutexAcquire(&pWDICtx->wptMutex);
9590
9591 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9595 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 &macBSSID))
9597 {
9598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9599 "This station does not exist in the WDI Station Table %d");
9600 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009602 }
9603
9604
Jeff Johnsone7245742012-09-05 17:12:55 -07009605 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009606
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9610 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9611 __func__, MAC_ADDR_ARRAY(macBSSID));
9612
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 }
9616
9617 /*------------------------------------------------------------------------
9618 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009619 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 ------------------------------------------------------------------------*/
9621 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9622 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9624 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9625 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009626
Jeff Johnsone7245742012-09-05 17:12:55 -07009627 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009628 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009629 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009630 }
9631
9632
9633 wpalMutexRelease(&pWDICtx->wptMutex);
9634 /*-----------------------------------------------------------------------
9635 Get message buffer
9636 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009637 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9638 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 sizeof(halAddBASessionReq.addBASessionParams),
9640 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9643 {
9644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9645 "Unable to get send buffer in Add BA session req %x %x %x",
9646 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 }
9650
9651 halAddBASessionReq.addBASessionParams.staIdx =
9652 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9653 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9654 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9655 WDI_MAC_ADDR_LEN);
9656 halAddBASessionReq.addBASessionParams.baTID =
9657 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9658 halAddBASessionReq.addBASessionParams.baPolicy =
9659 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9660 halAddBASessionReq.addBASessionParams.baBufferSize =
9661 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9662 halAddBASessionReq.addBASessionParams.baTimeout =
9663 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9664 halAddBASessionReq.addBASessionParams.baSSN =
9665 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9666 halAddBASessionReq.addBASessionParams.baDirection =
9667 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9668
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 wpalMemoryCopy( pSendBuffer+usDataOffset,
9670 &halAddBASessionReq.addBASessionParams,
9671 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009672
9673 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009675
9676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9680 wdiAddBASessionRspCb, pEventData->pUserData,
9681 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009682}/*WDI_ProcessAddBASessionReq*/
9683
9684/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009687
9688 @param pWDICtx: pointer to the WLAN DAL context
9689 pEventData: pointer to the event information structure
9690
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 @see
9692 @return Result of the function call
9693*/
9694WDI_Status
9695WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009696(
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 WDI_ControlBlockType* pWDICtx,
9698 WDI_EventInfoType* pEventData
9699)
9700{
9701 WDI_DelBAReqParamsType* pwdiDelBAParams;
9702 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009705 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009706 wpt_uint16 usDataOffset = 0;
9707 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 wpt_macAddr macBSSID;
9710 tDelBAParams halDelBAparam;
9711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9712
9713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 -------------------------------------------------------------------------*/
9716 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9717 ( NULL == pEventData->pCBfnc ))
9718 {
9719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009720 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009723 }
9724
9725 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9726 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9727 /*-------------------------------------------------------------------------
9728 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009729 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009730 -------------------------------------------------------------------------*/
9731 wpalMutexAcquire(&pWDICtx->wptMutex);
9732
9733 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009734 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009735 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009736 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9737 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009738 &macBSSID))
9739 {
9740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9741 "This station does not exist in the WDI Station Table %d");
9742 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 }
9745
Jeff Johnsone7245742012-09-05 17:12:55 -07009746 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009747
Jeff Johnsone7245742012-09-05 17:12:55 -07009748 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9751 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9752 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009753
9754 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 }
9757
9758 /*------------------------------------------------------------------------
9759 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 ------------------------------------------------------------------------*/
9762 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9763 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9765 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9766 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009767
Jeff Johnsone7245742012-09-05 17:12:55 -07009768 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009769 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009770 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009771 }
9772
9773 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009775 sizeof(halDelBAparam),
9776 &pSendBuffer, &usDataOffset, &usSendSize))||
9777 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9778 {
9779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9780 "Unable to get send buffer for DEL BA req %x %x %x",
9781 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009784 }
9785
9786 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9787 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9788 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9789
Jeff Johnsone7245742012-09-05 17:12:55 -07009790 wpalMemoryCopy( pSendBuffer+usDataOffset,
9791 &halDelBAparam,
9792 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009793
9794 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009796
9797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9801 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009802}/*WDI_ProcessDelBAReq*/
9803
9804#ifdef FEATURE_WLAN_CCX
9805
9806WDI_Status
9807WDI_ProcessTSMStatsReq
9808(
9809 WDI_ControlBlockType* pWDICtx,
9810 WDI_EventInfoType* pEventData
9811)
9812{
9813 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9814 WDI_TsmRspCb wdiTSMRspCb;
9815 wpt_uint8 ucCurrentBSSSesIdx = 0;
9816 WDI_BSSSessionType* pBSSSes = NULL;
9817 wpt_uint8* pSendBuffer = NULL;
9818 wpt_uint16 usDataOffset = 0;
9819 wpt_uint16 usSendSize = 0;
9820 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9821 tTsmStatsParams halTsmStatsReqParams = {0};
9822
9823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9824
9825 /*-------------------------------------------------------------------------
9826 Sanity check
9827 -------------------------------------------------------------------------*/
9828 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9829 ( NULL == pEventData->pCBfnc ))
9830 {
9831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 WDI_ASSERT(0);
9834 return WDI_STATUS_E_FAILURE;
9835 }
9836
9837 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9838 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9839 /*-------------------------------------------------------------------------
9840 Check to see if we are in the middle of an association, if so queue, if
9841 not it means it is free to process request
9842 -------------------------------------------------------------------------*/
9843 wpalMutexAcquire(&pWDICtx->wptMutex);
9844
9845 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9846 if ( NULL == pBSSSes )
9847 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9849 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9850 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009851
9852 wpalMutexRelease(&pWDICtx->wptMutex);
9853 return WDI_STATUS_E_NOT_ALLOWED;
9854 }
9855
9856 /*------------------------------------------------------------------------
9857 Check if this BSS is being currently processed or queued,
9858 if queued - queue the new request as well
9859 ------------------------------------------------------------------------*/
9860 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9861 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9863 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9864 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009865
9866 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9867 wpalMutexRelease(&pWDICtx->wptMutex);
9868 return wdiStatus;
9869 }
9870
9871 wpalMutexRelease(&pWDICtx->wptMutex);
9872 /*-----------------------------------------------------------------------
9873 Get message buffer
9874 ! TO DO : proper conversion into the HAL Message Request Format
9875 -----------------------------------------------------------------------*/
9876 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9877 sizeof(halTsmStatsReqParams),
9878 &pSendBuffer, &usDataOffset, &usSendSize))||
9879 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9880 {
9881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9882 "Unable to get send buffer in set bss key req %x %x %x",
9883 pEventData, pwdiTSMParams, wdiTSMRspCb);
9884 WDI_ASSERT(0);
9885 return WDI_STATUS_E_FAILURE;
9886 }
9887
9888 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9889 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9890 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9891 WDI_MAC_ADDR_LEN);
9892 wpalMemoryCopy( pSendBuffer+usDataOffset,
9893 &halTsmStatsReqParams,
9894 sizeof(halTsmStatsReqParams));
9895
9896 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9897 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9898
9899 /*-------------------------------------------------------------------------
9900 Send TSM Stats Request to HAL
9901 -------------------------------------------------------------------------*/
9902 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9903 wdiTSMRspCb, pEventData->pUserData,
9904 WDI_TSM_STATS_RESP);
9905}/*WDI_ProcessTSMStatsReq*/
9906
9907#endif
9908
9909
9910/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009911 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009913
9914 @param pWDICtx: pointer to the WLAN DAL context
9915 pEventData: pointer to the event information structure
9916
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 @see
9918 @return Result of the function call
9919*/
9920WDI_Status
9921WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009922(
Jeff Johnson295189b2012-06-20 16:38:30 -07009923 WDI_ControlBlockType* pWDICtx,
9924 WDI_EventInfoType* pEventData
9925)
9926{
9927 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9928 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009930 wpt_uint16 usDataOffset = 0;
9931 wpt_uint16 usSendSize = 0;
9932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9933
9934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 -------------------------------------------------------------------------*/
9937 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9938 ( NULL == pEventData->pCBfnc ))
9939 {
9940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 }
9945
9946 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9947 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9948 /*-----------------------------------------------------------------------
9949 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009950 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009952 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009953 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9954 &pSendBuffer, &usDataOffset, &usSendSize))||
9955 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9956 {
9957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9958 "Unable to get send buffer in set bss key req %x %x %x",
9959 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 }
9963
Jeff Johnsone7245742012-09-05 17:12:55 -07009964 wpalMemoryCopy( pSendBuffer+usDataOffset,
9965 &pwdiFlushAcParams->wdiFlushAcInfo,
9966 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009967
9968 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009969 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009970
9971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9975 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009976}/*WDI_ProcessFlushAcReq*/
9977
9978/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009981
9982 @param pWDICtx: pointer to the WLAN DAL context
9983 pEventData: pointer to the event information structure
9984
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 @see
9986 @return Result of the function call
9987*/
9988WDI_Status
9989WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009990(
Jeff Johnson295189b2012-06-20 16:38:30 -07009991 WDI_ControlBlockType* pWDICtx,
9992 WDI_EventInfoType* pEventData
9993)
9994{
9995 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9996 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009997 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009998 wpt_uint16 usDataOffset = 0;
9999 wpt_uint16 usSendSize = 0;
10000
10001 tBtAmpEventMsg haltBtAmpEventMsg;
10002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10003
10004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 -------------------------------------------------------------------------*/
10007 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10008 ( NULL == pEventData->pCBfnc ))
10009 {
10010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010014 }
10015
10016 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10017 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10018 /*-----------------------------------------------------------------------
10019 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10024 &pSendBuffer, &usDataOffset, &usSendSize))||
10025 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10026 {
10027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10028 "Unable to get send buffer in BT AMP event req %x %x %x",
10029 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 }
10033
Jeff Johnsone7245742012-09-05 17:12:55 -070010034 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010035 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010036 wpalMemoryCopy( pSendBuffer+usDataOffset,
10037 &haltBtAmpEventMsg.btAmpEventParams,
10038 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010039
10040 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010042
10043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010046 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10047 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010048}/*WDI_ProcessBtAmpEventReq*/
10049
10050/**
10051 @brief Process Add STA self Request function (called when Main FSM
10052 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010053
10054 @param pWDICtx: pointer to the WLAN DAL context
10055 pEventData: pointer to the event information structure
10056
Jeff Johnson295189b2012-06-20 16:38:30 -070010057 @see
10058 @return Result of the function call
10059*/
10060WDI_Status
10061WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010062(
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 WDI_ControlBlockType* pWDICtx,
10064 WDI_EventInfoType* pEventData
10065)
10066{
10067 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10068 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010069 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010070 wpt_uint16 usDataOffset = 0;
10071 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010072 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10074
10075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 -------------------------------------------------------------------------*/
10078 if (( NULL == pEventData ) ||
10079 ( NULL == pEventData->pEventData) ||
10080 ( NULL == pEventData->pCBfnc))
10081 {
10082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010083 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010086 }
10087
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010090 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010091 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10092 /*-----------------------------------------------------------------------
10093 Get message buffer
10094 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010095 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10096 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 sizeof(tAddStaSelfParams),
10098 &pSendBuffer, &usDataOffset, &usSendSize))||
10099 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
10100 {
10101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10102 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10103 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 }
10107
10108 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010110 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10111
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010113 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
10114
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
10116 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010117
10118 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010119 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010120
10121 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10125 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10126 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010127}/*WDI_ProcessAddSTASelfReq*/
10128
10129
10130
10131/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010132 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010133 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010134
10135 @param pWDICtx: pointer to the WLAN DAL context
10136 pEventData: pointer to the event information structure
10137
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 @see
10139 @return Result of the function call
10140*/
10141WDI_Status
10142WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010143(
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 WDI_ControlBlockType* pWDICtx,
10145 WDI_EventInfoType* pEventData
10146)
10147{
10148 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10149 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010150 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010151 wpt_uint16 usDataOffset = 0;
10152 wpt_uint16 usSendSize = 0;
10153 tDelStaSelfParams halSetDelSelfSTAParams;
10154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10155
10156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010158 -------------------------------------------------------------------------*/
10159 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10160 ( NULL == pEventData->pCBfnc ))
10161 {
10162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 }
10167
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10170 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10171
10172 /*-----------------------------------------------------------------------
10173 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010174 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010175 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010177 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10178 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010179 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10181 {
10182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10183 "Unable to get send buffer in Del Sta Self req %x %x %x",
10184 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 }
10188
Jeff Johnsone7245742012-09-05 17:12:55 -070010189 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10191
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10193 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010194
10195 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010196 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010197
10198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010201 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10202 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 WDI_DEL_STA_SELF_RESP);
10204
10205}
10206
Jeff Johnsone7245742012-09-05 17:12:55 -070010207#ifdef FEATURE_OEM_DATA_SUPPORT
10208/**
10209 @brief Process Start Oem Data Request function (called when Main
10210 FSM allows it)
10211
10212 @param pWDICtx: pointer to the WLAN DAL context
10213 pEventData: pointer to the event information structure
10214
10215 @see
10216 @return Result of the function call
10217*/
10218WDI_Status
10219WDI_ProcessStartOemDataReq
10220(
10221 WDI_ControlBlockType* pWDICtx,
10222 WDI_EventInfoType* pEventData
10223)
10224{
10225 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10226 WDI_oemDataRspCb wdiOemDataRspCb;
10227 wpt_uint8* pSendBuffer = NULL;
10228 wpt_uint16 usDataOffset = 0;
10229 wpt_uint16 usSendSize = 0;
10230 wpt_uint16 reqLen;
10231 tStartOemDataReqParams* halStartOemDataReqParams;
10232
10233 /*-------------------------------------------------------------------------
10234 Sanity check
10235 -------------------------------------------------------------------------*/
10236 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10237 ( NULL == pEventData->pCBfnc ))
10238 {
10239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010240 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010241 WDI_ASSERT(0);
10242 return WDI_STATUS_E_FAILURE;
10243 }
10244
10245 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10246 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10247
10248 /*-----------------------------------------------------------------------
10249 Get message buffer
10250 -----------------------------------------------------------------------*/
10251
10252 reqLen = sizeof(tStartOemDataReqParams);
10253
10254 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10255 WDI_START_OEM_DATA_REQ, reqLen,
10256 &pSendBuffer, &usDataOffset, &usSendSize))||
10257 (usSendSize < (usDataOffset + reqLen)))
10258 {
10259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10260 "Unable to get send buffer in Start Oem Data req %x %x %x",
10261 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10262 WDI_ASSERT(0);
10263 return WDI_STATUS_E_FAILURE;
10264 }
10265
10266 //copying WDI OEM DATA REQ PARAMS to shared memory
10267 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10268
10269 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10270 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10271
10272 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10273 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10274
10275 /*-------------------------------------------------------------------------
10276 Send Start Request to HAL
10277 -------------------------------------------------------------------------*/
10278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10279 wdiOemDataRspCb, pEventData->pUserData,
10280 WDI_START_OEM_DATA_RESP);
10281}/*WDI_ProcessStartOemDataReq*/
10282#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010283
10284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010287
10288 @param pWDICtx: pointer to the WLAN DAL context
10289 pEventData: pointer to the event information structure
10290
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 @see
10292 @return Result of the function call
10293*/
10294WDI_Status
10295WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010296(
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 WDI_ControlBlockType* pWDICtx,
10298 WDI_EventInfoType* pEventData
10299)
10300{
10301 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10302 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 wpt_uint16 usDataOffset = 0;
10305 wpt_uint16 usSendSize = 0;
10306 tHalWlanHostResumeReqParam halResumeReqParams;
10307
10308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10309
10310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 -------------------------------------------------------------------------*/
10313 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10314 ( NULL == pEventData->pCBfnc ))
10315 {
10316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010317 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010320 }
10321
10322 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10323 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10324
10325 /*-----------------------------------------------------------------------
10326 Get message buffer
10327 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10330 &pSendBuffer, &usDataOffset, &usSendSize))||
10331 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10332 {
10333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010334 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010338 }
10339
Jeff Johnsone7245742012-09-05 17:12:55 -070010340 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010342
10343 wpalMemoryCopy( pSendBuffer+usDataOffset,
10344 &halResumeReqParams,
10345 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010346
10347 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010349
10350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010351 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010352 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10354 wdiHostResumeRspCb, pEventData->pUserData,
10355 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010356}/*WDI_ProcessHostResumeReq*/
10357
10358/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010359 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010361
10362 @param pWDICtx: pointer to the WLAN DAL context
10363 pEventData: pointer to the event information structure
10364
Jeff Johnson295189b2012-06-20 16:38:30 -070010365 @see
10366 @return Result of the function call
10367*/
10368WDI_Status
10369WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010370(
Jeff Johnson295189b2012-06-20 16:38:30 -070010371 WDI_ControlBlockType* pWDICtx,
10372 WDI_EventInfoType* pEventData
10373)
10374{
10375 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10376 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010377 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010378 wpt_uint16 usDataOffset = 0;
10379 wpt_uint16 usSendSize = 0;
10380 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10382
10383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010384 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010385 -------------------------------------------------------------------------*/
10386 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10387 ( NULL == pEventData->pCBfnc ))
10388 {
10389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010390 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010393 }
10394
10395 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10396 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010397
Jeff Johnson295189b2012-06-20 16:38:30 -070010398 /*-----------------------------------------------------------------------
10399 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010403 sizeof(halTxPerTrackingReqParam),
10404 &pSendBuffer, &usDataOffset, &usSendSize))||
10405 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10406 {
10407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10408 "Unable to get send buffer in set tx per tracking req %x %x %x",
10409 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010413
Jeff Johnson295189b2012-06-20 16:38:30 -070010414 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10415 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10416 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10417 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010418
10419 wpalMemoryCopy( pSendBuffer+usDataOffset,
10420 &halTxPerTrackingReqParam,
10421 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010422
10423 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010424 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010425
10426 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010427 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010428 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10430 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010431}/*WDI_ProcessSetTxPerTrackingReq*/
10432
10433/*=========================================================================
10434 Indications
10435=========================================================================*/
10436
10437/**
10438 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010439
10440 @param pWDICtx: pointer to the WLAN DAL context
10441 pEventData: pointer to the event information structure
10442
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 @see
10444 @return Result of the function call
10445*/
10446WDI_Status
10447WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010448(
Jeff Johnson295189b2012-06-20 16:38:30 -070010449 WDI_ControlBlockType* pWDICtx,
10450 WDI_EventInfoType* pEventData
10451)
10452{
10453 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010454 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010455 wpt_uint16 usDataOffset = 0;
10456 wpt_uint16 usSendSize = 0;
10457 WDI_Status wdiStatus;
10458 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10460
10461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010463 -------------------------------------------------------------------------*/
10464 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10465 {
10466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010467 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010469 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010470 }
10471
10472 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10473
10474 /*-----------------------------------------------------------------------
10475 Get message buffer
10476 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010477 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10478 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 sizeof(halWlanSuspendIndparams),
10480 &pSendBuffer, &usDataOffset, &usSendSize))||
10481 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10482 {
10483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10484 "Unable to get send buffer in Suspend Ind ");
10485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 }
10488
10489 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10490 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10491
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010493 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010494
Jeff Johnsone7245742012-09-05 17:12:55 -070010495 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10496 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010497
10498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 -------------------------------------------------------------------------*/
10501 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010503
Jeff Johnsone7245742012-09-05 17:12:55 -070010504 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010505 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10506}/*WDI_ProcessHostSuspendInd*/
10507
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010508
10509
10510/**
10511 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10512
10513 @param pWDICtx: pointer to the WLAN DAL context
10514 pEventData: pointer to the event information structure
10515
10516 @see
10517 @return Result of the function call
10518*/
10519WDI_Status
10520WDI_ProcessTrafficStatsInd
10521(
10522 WDI_ControlBlockType* pWDICtx,
10523 WDI_EventInfoType* pEventData
10524)
10525{
10526 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10527 wpt_uint8* pSendBuffer = NULL;
10528 wpt_uint16 usDataOffset = 0;
10529 wpt_uint16 usSendSize = 0;
10530 WDI_Status wdiStatus;
10531 tStatsClassBIndParams* pStatsClassBIndParams;
10532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10533
10534 /*-------------------------------------------------------------------------
10535 Sanity check
10536 -------------------------------------------------------------------------*/
10537 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10538 {
10539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10540 "%s: Invalid parameters in Traffic Stats ind",__func__);
10541 WDI_ASSERT(0);
10542 return WDI_STATUS_E_FAILURE;
10543 }
10544
10545 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10546
10547 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10548 {
10549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10550 "%s: Invalid parameters in Traffic Stats ind",__func__);
10551 WDI_ASSERT(0);
10552 return WDI_STATUS_E_FAILURE;
10553 }
10554
10555 /*-----------------------------------------------------------------------
10556 Get message buffer
10557 -----------------------------------------------------------------------*/
10558 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10559 WDI_TRAFFIC_STATS_IND,
10560 sizeof(tStatsClassBIndParams),
10561 &pSendBuffer, &usDataOffset, &usSendSize))||
10562 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10563 {
10564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10565 "Unable to get send buffer in Traffic Stats Ind ");
10566 WDI_ASSERT(0);
10567 return WDI_STATUS_E_FAILURE;
10568 }
10569
10570 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10571
10572 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10573
10574 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10575 pTrafficStatsIndParams->pTrafficStats,
10576 pTrafficStatsIndParams->length);
10577
10578 /*-------------------------------------------------------------------------
10579 Send Suspend Request to HAL
10580 -------------------------------------------------------------------------*/
10581 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10582 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10583
10584 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10585 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10586}/*WDI_ProcessTrafficStatsInd*/
10587
Chet Lanctota96bb432013-03-18 10:26:30 -070010588#ifdef WLAN_FEATURE_11W
10589/**
10590 @brief Process Exclude Unencrypted Indications function (called
10591 when Main FSM allows it)
10592
10593 @param pWDICtx: pointer to the WLAN DAL context
10594 pEventData: pointer to the event information structure
10595
10596 @see
10597 @return Result of the function call
10598*/
10599WDI_Status
10600WDI_ProcessExcludeUnencryptInd
10601(
10602 WDI_ControlBlockType* pWDICtx,
10603 WDI_EventInfoType* pEventData
10604)
10605{
10606 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10607 wpt_uint8* pSendBuffer = NULL;
10608 wpt_uint16 usDataOffset = 0;
10609 wpt_uint16 usSendSize = 0;
10610 WDI_Status wdiStatus;
10611 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10613
10614 /*-------------------------------------------------------------------------
10615 Sanity check
10616 -------------------------------------------------------------------------*/
10617 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10618 {
10619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10620 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10621 WDI_ASSERT(0);
10622 return WDI_STATUS_E_FAILURE;
10623 }
10624
10625 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10626
10627 /*-----------------------------------------------------------------------
10628 Get message buffer
10629 -----------------------------------------------------------------------*/
10630 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10631 WDI_EXCLUDE_UNENCRYPTED_IND,
10632 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10633 &pSendBuffer, &usDataOffset, &usSendSize))||
10634 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10635 {
10636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10637 "Unable to get send buffer in Exclude Unencrypted Ind ");
10638 WDI_ASSERT(0);
10639 return WDI_STATUS_E_FAILURE;
10640 }
10641
10642 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10643
10644 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10645
10646 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10647 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10648
10649 /*-------------------------------------------------------------------------
10650 Send Suspend Request to HAL
10651 -------------------------------------------------------------------------*/
10652 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10653 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10654
10655 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10656 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10657}/*WDI_ProcessExcludeUnencryptInd*/
10658#endif
10659
Jeff Johnson295189b2012-06-20 16:38:30 -070010660/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010661 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010662==========================================================================*/
10663/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010666
10667 @param pWDICtx: pointer to the WLAN DAL context
10668 pEventData: pointer to the event information structure
10669
Jeff Johnson295189b2012-06-20 16:38:30 -070010670 @see
10671 @return Result of the function call
10672*/
10673WDI_Status
10674WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010675(
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 WDI_ControlBlockType* pWDICtx,
10677 WDI_EventInfoType* pEventData
10678)
10679{
10680 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10681 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010682 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010683 wpt_uint16 usDataOffset = 0;
10684 wpt_uint16 usSendSize = 0;
10685 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10687
10688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010689 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010690 -------------------------------------------------------------------------*/
10691 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10692 ( NULL == pEventData->pCBfnc ))
10693 {
10694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010695 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010698 }
10699
10700 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10701 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10702 /*-----------------------------------------------------------------------
10703 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010706 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010707 sizeof(halSwitchChannelReq.switchChannelParams),
10708 &pSendBuffer, &usDataOffset, &usSendSize))||
10709 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10710 {
10711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10712 "Unable to get send buffer in channel switch req %x %x %x",
10713 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010716 }
10717
Jeff Johnsone7245742012-09-05 17:12:55 -070010718 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010719 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010720#ifndef WLAN_FEATURE_VOWIFI
10721 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10723#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010724 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010725 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10726
10727#ifdef WLAN_FEATURE_VOWIFI
10728 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10731 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10732 WDI_MAC_ADDR_LEN);
10733 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10734 pwdiSwitchChParams->wdiChInfo.macBSSId,
10735 WDI_MAC_ADDR_LEN);
10736#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 wpalMemoryCopy( pSendBuffer+usDataOffset,
10738 &halSwitchChannelReq.switchChannelParams,
10739 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010740
10741 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010742 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010743
10744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10748 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010749}/*WDI_ProcessChannelSwitchReq*/
10750
10751/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010754
10755 @param pWDICtx: pointer to the WLAN DAL context
10756 pEventData: pointer to the event information structure
10757
Jeff Johnson295189b2012-06-20 16:38:30 -070010758 @see
10759 @return Result of the function call
10760*/
10761WDI_Status
10762WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010763(
Jeff Johnson295189b2012-06-20 16:38:30 -070010764 WDI_ControlBlockType* pWDICtx,
10765 WDI_EventInfoType* pEventData
10766)
10767{
10768 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10769 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 wpt_uint16 usDataOffset = 0;
10774 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010775 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010776
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 tConfigStaReqMsg halConfigStaReqMsg;
10778 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10780
10781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 -------------------------------------------------------------------------*/
10784 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10785 ( NULL == pEventData->pCBfnc ))
10786 {
10787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010791 }
10792
10793 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10794 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10795 /*-------------------------------------------------------------------------
10796 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010797 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 -------------------------------------------------------------------------*/
10799 wpalMutexAcquire(&pWDICtx->wptMutex);
10800
10801 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10805 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10806 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010807
Jeff Johnsone7245742012-09-05 17:12:55 -070010808 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010809 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10811 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10812 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010813
10814 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010815 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 }
10817
10818 /*------------------------------------------------------------------------
10819 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010821 ------------------------------------------------------------------------*/
10822 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10823 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10825 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10826 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010827
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010830 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010831 }
10832
10833 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010834
10835 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10836#ifdef WLAN_FEATURE_11AC
10837 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010838 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010839 else
10840#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010841 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010842
Jeff Johnson295189b2012-06-20 16:38:30 -070010843 /*-----------------------------------------------------------------------
10844 Get message buffer
10845 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010846 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10847 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010848 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010849 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010850 {
10851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10852 "Unable to get send buffer in config sta req %x %x %x",
10853 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 }
10857
10858 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010860 &pwdiConfigSTAParams->wdiReqInfo);
10861
10862 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10863 {
10864 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010865 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010866 WDI_STATableFindStaidByAddr(pWDICtx,
10867 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010868 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 {
10870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10871 "This station does not exist in the WDI Station Table %d");
10872 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010873 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010875 }
10876 }
10877 else
10878 {
10879 /* Need to fill in the STA Index to invalid, since at this point we have not
10880 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070010881 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010882 }
10883
10884 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010885 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010886
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 wpalMemoryCopy( pSendBuffer+usDataOffset,
10888 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010889 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010890
10891 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010892 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010893
Jeff Johnsone7245742012-09-05 17:12:55 -070010894 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10895 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 sizeof(pWDICtx->wdiCachedConfigStaReq));
10897
10898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010899 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010900 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010901 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10902 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010903}/*WDI_ProcessConfigStaReq*/
10904
10905
10906/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010909
10910 @param pWDICtx: pointer to the WLAN DAL context
10911 pEventData: pointer to the event information structure
10912
Jeff Johnson295189b2012-06-20 16:38:30 -070010913 @see
10914 @return Result of the function call
10915*/
10916WDI_Status
10917WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010918(
Jeff Johnson295189b2012-06-20 16:38:30 -070010919 WDI_ControlBlockType* pWDICtx,
10920 WDI_EventInfoType* pEventData
10921)
10922{
10923 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10924 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 wpt_uint16 usDataOffset = 0;
10929 wpt_uint16 usSendSize = 0;
10930 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010931 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10933
10934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 -------------------------------------------------------------------------*/
10937 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10938 ( NULL == pEventData->pCBfnc ))
10939 {
10940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010944 }
10945
10946 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10947 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10948 /*-------------------------------------------------------------------------
10949 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010950 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010951 -------------------------------------------------------------------------*/
10952 wpalMutexAcquire(&pWDICtx->wptMutex);
10953
10954 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010956 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010957 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10958 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10959 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010960
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10965 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010966 }
10967 else
10968 {
10969 /*------------------------------------------------------------------------
10970 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010971 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010972 ------------------------------------------------------------------------*/
10973 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10974 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10976 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10977 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10978
10979 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010980 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010982 }
10983 }
10984 /* If the link is set to enter IDLE - the Session allocated for this BSS
10985 will be deleted on the Set Link State response coming from HAL
10986 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010987 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010988 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10989
10990 wpalMutexRelease(&pWDICtx->wptMutex);
10991 /*-----------------------------------------------------------------------
10992 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010993 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010994 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010995
10996 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010997 sizeof(halLinkStateReqMsg),
10998 &pSendBuffer, &usDataOffset, &usSendSize))||
10999 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11000 {
11001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11002 "Unable to get send buffer in set bss key req %x %x %x",
11003 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011006 }
11007
11008 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11009 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11010
11011 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11012 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11013
Jeff Johnsone7245742012-09-05 17:12:55 -070011014 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011015 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11016
Jeff Johnsone7245742012-09-05 17:12:55 -070011017 wpalMemoryCopy( pSendBuffer+usDataOffset,
11018 &halLinkStateReqMsg,
11019 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011020
11021 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011022 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011023
11024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011025 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011026 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011027 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11028 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011029}/*WDI_ProcessSetLinkStateReq*/
11030
11031
11032/**
11033 @brief Process Get Stats Request function (called when Main FSM
11034 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011035
11036 @param pWDICtx: pointer to the WLAN DAL context
11037 pEventData: pointer to the event information structure
11038
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 @see
11040 @return Result of the function call
11041*/
11042WDI_Status
11043WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011044(
Jeff Johnson295189b2012-06-20 16:38:30 -070011045 WDI_ControlBlockType* pWDICtx,
11046 WDI_EventInfoType* pEventData
11047)
11048{
11049 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11050 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011051 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011052 wpt_uint16 usDataOffset = 0;
11053 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 WDI_BSSSessionType* pBSSSes = NULL;
11056 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011057 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011058 tHalStatsReqMsg halStatsReqMsg;
11059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11060
11061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 -------------------------------------------------------------------------*/
11064 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11065 ( NULL == pEventData->pCBfnc ) )
11066 {
11067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011071 }
11072
11073 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11074 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11075
11076 /*-------------------------------------------------------------------------
11077 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011078 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011079 -------------------------------------------------------------------------*/
11080 wpalMutexAcquire(&pWDICtx->wptMutex);
11081
11082 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011083 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011084 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011085 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11086 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011087 &macBSSID))
11088 {
11089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11090 "This station does not exist in the WDI Station Table %d");
11091 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011093 }
11094
Jeff Johnsone7245742012-09-05 17:12:55 -070011095 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11096 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011097 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11099 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11100 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011101
11102 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011103 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011104 }
11105
11106 /*------------------------------------------------------------------------
11107 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011108 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011109 ------------------------------------------------------------------------*/
11110 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11111 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11113 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11114 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011115
Jeff Johnsone7245742012-09-05 17:12:55 -070011116 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011117 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011118 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011119 }
11120
11121
11122 wpalMutexRelease(&pWDICtx->wptMutex);
11123
11124 /*-----------------------------------------------------------------------
11125 Get message buffer
11126 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011128 sizeof(halStatsReqMsg.statsReqParams),
11129 &pSendBuffer, &usDataOffset, &usSendSize))||
11130 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11131 {
11132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11133 "Unable to get send buffer in set bss key req %x %x %x",
11134 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011137 }
11138
Jeff Johnsone7245742012-09-05 17:12:55 -070011139 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011140 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011141 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011142 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011143 wpalMemoryCopy( pSendBuffer+usDataOffset,
11144 &halStatsReqMsg.statsReqParams,
11145 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011146
11147 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011148 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011149
11150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011151 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011152 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011153 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11154 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011155}/*WDI_ProcessGetStatsReq*/
11156
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011157#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11158/**
11159 @brief Process Get Roam Rssi Request function (called when Main FSM
11160 allows it)
11161
11162 @param pWDICtx: pointer to the WLAN DAL context
11163 pEventData: pointer to the event information structure
11164
11165 @see
11166 @return Result of the function call
11167*/
11168WDI_Status
11169WDI_ProcessGetRoamRssiReq
11170(
11171 WDI_ControlBlockType* pWDICtx,
11172 WDI_EventInfoType* pEventData
11173)
11174{
11175 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11176 WDI_GetStatsRspCb wdiGetStatsRspCb;
11177 wpt_uint8* pSendBuffer = NULL;
11178 wpt_uint16 usDataOffset = 0;
11179 wpt_uint16 usSendSize = 0;
11180 wpt_uint8 ucCurrentBSSSesIdx = 0;
11181 WDI_BSSSessionType* pBSSSes = NULL;
11182 wpt_macAddr macBSSID;
11183 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11184 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11186 /*-------------------------------------------------------------------------
11187 Sanity check
11188 -------------------------------------------------------------------------*/
11189 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11190 ( NULL == pEventData->pCBfnc ) )
11191 {
11192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11193 "%s: Invalid parameters", __func__);
11194 WDI_ASSERT(0);
11195 return WDI_STATUS_E_FAILURE;
11196 }
11197
11198 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11199 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11200
11201 /*-------------------------------------------------------------------------
11202 Check to see if we are in the middle of an association, if so queue, if
11203 not it means it is free to process request
11204 -------------------------------------------------------------------------*/
11205 wpalMutexAcquire(&pWDICtx->wptMutex);
11206
11207 /*------------------------------------------------------------------------
11208 Find the BSS for which the request is made
11209 ------------------------------------------------------------------------*/
11210 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11211 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11212 &macBSSID))
11213 {
11214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11215 "This station does not exist in the WDI Station Table %d");
11216 wpalMutexRelease(&pWDICtx->wptMutex);
11217 return WDI_STATUS_E_FAILURE;
11218 }
11219
11220 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11221 if ( NULL == pBSSSes )
11222 {
11223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11224 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11225 __func__, MAC_ADDR_ARRAY(macBSSID));
11226
11227 wpalMutexRelease(&pWDICtx->wptMutex);
11228 return WDI_STATUS_E_NOT_ALLOWED;
11229 }
11230
11231 /*------------------------------------------------------------------------
11232 Check if this BSS is being currently processed or queued,
11233 if queued - queue the new request as well
11234 ------------------------------------------------------------------------*/
11235 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11236 {
11237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11238 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11239 __func__, MAC_ADDR_ARRAY(macBSSID));
11240
11241 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11242 wpalMutexRelease(&pWDICtx->wptMutex);
11243 return wdiStatus;
11244 }
11245
11246 wpalMutexRelease(&pWDICtx->wptMutex);
11247
11248 /*-----------------------------------------------------------------------
11249 Get message buffer
11250 -----------------------------------------------------------------------*/
11251 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11252 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11253 &pSendBuffer, &usDataOffset, &usSendSize))||
11254 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11255 {
11256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11257 "Unable to get send buffer in set bss key req %x %x %x",
11258 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11259 WDI_ASSERT(0);
11260 return WDI_STATUS_E_FAILURE;
11261 }
11262
11263 halRssiRoamReqMsg.roamRssiReqParams.staId =
11264 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11265 wpalMemoryCopy( pSendBuffer+usDataOffset,
11266 &halRssiRoamReqMsg.roamRssiReqParams,
11267 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11268
11269 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11270 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11271
11272 /*-------------------------------------------------------------------------
11273 Send Get STA Request to HAL
11274 -------------------------------------------------------------------------*/
11275 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11276 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11277}/*WDI_ProcessGetRoamRssiReq*/
11278#endif
11279
Jeff Johnson295189b2012-06-20 16:38:30 -070011280/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011281 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011282 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011283
11284 @param pWDICtx: pointer to the WLAN DAL context
11285 pEventData: pointer to the event information structure
11286
Jeff Johnson295189b2012-06-20 16:38:30 -070011287 @see
11288 @return Result of the function call
11289*/
11290WDI_Status
11291WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011292(
Jeff Johnson295189b2012-06-20 16:38:30 -070011293 WDI_ControlBlockType* pWDICtx,
11294 WDI_EventInfoType* pEventData
11295)
11296{
11297 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11298 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11299
Jeff Johnsone7245742012-09-05 17:12:55 -070011300 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011301 wpt_uint16 usDataOffset = 0;
11302 wpt_uint16 usSendSize = 0;
11303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11304
11305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011307 -------------------------------------------------------------------------*/
11308 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11309 ( NULL == pEventData->pCBfnc))
11310 {
11311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 }
11316
11317 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11318 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11319
11320 /*-----------------------------------------------------------------------
11321 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011322 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011323 -----------------------------------------------------------------------*/
11324
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11327 &pSendBuffer, &usDataOffset, &usSendSize))||
11328 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11329 {
11330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11331 "Unable to get send buffer in set bss key req %x %x %x",
11332 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11333 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 }
11336
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 wpalMemoryCopy( pSendBuffer+usDataOffset,
11338 &pwdiUpdateCfgParams->uConfigBufferLen,
11339 sizeof(wpt_uint32));
11340 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11341 pwdiUpdateCfgParams->pConfigBuffer,
11342 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011343
11344 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011345 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011346
11347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011348 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011349 -------------------------------------------------------------------------*/
11350
Jeff Johnsone7245742012-09-05 17:12:55 -070011351 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11352 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011353
11354}/*WDI_ProcessUpdateCfgReq*/
11355
11356
11357/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011358 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011360
11361 @param pWDICtx: pointer to the WLAN DAL context
11362 pEventData: pointer to the event information structure
11363
Jeff Johnson295189b2012-06-20 16:38:30 -070011364 @see
11365 @return Result of the function call
11366*/
11367WDI_Status
11368WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011369(
Jeff Johnson295189b2012-06-20 16:38:30 -070011370 WDI_ControlBlockType* pWDICtx,
11371 WDI_EventInfoType* pEventData
11372)
11373{
11374 WDI_AddBAReqParamsType* pwdiAddBAParams;
11375 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011376 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011377 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011378 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011379 wpt_uint16 usDataOffset = 0;
11380 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011382 wpt_macAddr macBSSID;
11383
11384 tAddBAReqMsg halAddBAReq;
11385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11386
11387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011389 -------------------------------------------------------------------------*/
11390 if (( NULL == pEventData ) ||
11391 ( NULL == pEventData->pEventData) ||
11392 ( NULL == pEventData->pCBfnc ))
11393 {
11394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 }
11399
11400 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11401 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11402
11403 /*-------------------------------------------------------------------------
11404 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011405 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011406 -------------------------------------------------------------------------*/
11407 wpalMutexAcquire(&pWDICtx->wptMutex);
11408
11409 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011410 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011411 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011412 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11413 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 &macBSSID))
11415 {
11416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11417 "This station does not exist in the WDI Station Table %d");
11418 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011420 }
11421
Jeff Johnsone7245742012-09-05 17:12:55 -070011422 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11423 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011424 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11426 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11427 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011428
11429 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011430 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011431 }
11432
11433 /*------------------------------------------------------------------------
11434 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011435 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011436 ------------------------------------------------------------------------*/
11437 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11438 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11440 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11441 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011442
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011444 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011445 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011446 }
11447
11448
11449 wpalMutexRelease(&pWDICtx->wptMutex);
11450 /*-----------------------------------------------------------------------
11451 Get message buffer
11452 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011454 sizeof(halAddBAReq.addBAParams),
11455 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011456 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011457 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11458 {
11459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11460 "Unable to get send buffer in Add BA req %x %x %x",
11461 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 }
11465
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11468 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11469#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011470 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011471 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11472#endif
11473
Jeff Johnsone7245742012-09-05 17:12:55 -070011474 wpalMemoryCopy( pSendBuffer+usDataOffset,
11475 &halAddBAReq.addBAParams,
11476 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011477
11478 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011479 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011480
11481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011482 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011483 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011484 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11485 wdiAddBARspCb, pEventData->pUserData,
11486 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011487}/*WDI_ProcessAddBAReq*/
11488
11489
11490
11491/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011492 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011494
11495 @param pWDICtx: pointer to the WLAN DAL context
11496 pEventData: pointer to the event information structure
11497
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 @see
11499 @return Result of the function call
11500*/
11501WDI_Status
11502WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011503(
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 WDI_ControlBlockType* pWDICtx,
11505 WDI_EventInfoType* pEventData
11506)
11507{
11508 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11509 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011510 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011511 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011512 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011513 wpt_uint16 usDataOffset = 0;
11514 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011515 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011516 wpt_uint16 index;
11517 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011518
Jeff Johnson295189b2012-06-20 16:38:30 -070011519 tTriggerBAReqMsg halTriggerBAReq;
11520 tTriggerBaReqCandidate* halTriggerBACandidate;
11521 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11523
11524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011526 -------------------------------------------------------------------------*/
11527 if (( NULL == pEventData ) ||
11528 ( NULL == pEventData->pEventData ) ||
11529 ( NULL == pEventData->pCBfnc ))
11530 {
11531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011535 }
11536
11537 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11538 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11539 /*-------------------------------------------------------------------------
11540 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011541 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011542 -------------------------------------------------------------------------*/
11543 wpalMutexAcquire(&pWDICtx->wptMutex);
11544
11545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11549 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 &macBSSID))
11551 {
11552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11553 "This station does not exist in the WDI Station Table %d");
11554 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011556 }
11557
Jeff Johnsone7245742012-09-05 17:12:55 -070011558 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11559 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011560 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11562 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11563 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011564
11565 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 }
11568
11569 /*------------------------------------------------------------------------
11570 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011571 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011572 ------------------------------------------------------------------------*/
11573 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11574 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11576 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11577 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011578
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011582 }
11583
11584
11585 wpalMutexRelease(&pWDICtx->wptMutex);
11586 /*-----------------------------------------------------------------------
11587 Get message buffer
11588 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011589 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11590 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011591 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011592 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11594 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011595 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011597 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011598 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11599 {
11600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11601 "Unable to get send buffer in Trigger BA req %x %x %x",
11602 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011605 }
11606
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011609 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011610 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11611
Jeff Johnsone7245742012-09-05 17:12:55 -070011612 wpalMemoryCopy( pSendBuffer+usDataOffset,
11613 &halTriggerBAReq.triggerBAParams,
11614 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011615
Jeff Johnsone7245742012-09-05 17:12:55 -070011616 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11618 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11619 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011620
11621 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 index++)
11623 {
11624 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11625 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11626 halTriggerBACandidate++;
11627 wdiTriggerBACandidate++;
11628 }
11629
11630 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011631 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011632
11633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011635 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011636 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11637 wdiTriggerBARspCb, pEventData->pUserData,
11638 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011639}/*WDI_ProcessTriggerBAReq*/
11640
11641
11642
11643/**
11644 @brief Process Update Beacon Params Request function (called when Main FSM
11645 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011646
11647 @param pWDICtx: pointer to the WLAN DAL context
11648 pEventData: pointer to the event information structure
11649
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 @see
11651 @return Result of the function call
11652*/
11653WDI_Status
11654WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011655(
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 WDI_ControlBlockType* pWDICtx,
11657 WDI_EventInfoType* pEventData
11658)
11659{
11660 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11661 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 wpt_uint16 usDataOffset = 0;
11664 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011665 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11667
11668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011670 -------------------------------------------------------------------------*/
11671 if (( NULL == pEventData ) ||
11672 ( NULL == pEventData->pEventData) ||
11673 ( NULL == pEventData->pCBfnc))
11674 {
11675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011679 }
11680
11681 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11682 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11683 /*-----------------------------------------------------------------------
11684 Get message buffer
11685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011687 sizeof(halUpdateBeaconParams),
11688 &pSendBuffer, &usDataOffset, &usSendSize))||
11689 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11690 {
11691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11692 "Unable to get send buffer in set bss key req %x %x %x",
11693 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011696 }
11697
11698 /*BSS Index of the BSS*/
11699 halUpdateBeaconParams.bssIdx =
11700 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11701 /*shortPreamble mode. HAL should update all the STA rates when it
11702 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011703 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011704 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11705 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011706 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011707 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11708 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011709 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011710 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11711
11712 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011713 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011714 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011715 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011716 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011717 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011718 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011721 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011722 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011723 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011724 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11725 halUpdateBeaconParams.fRIFSMode =
11726 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011727 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011728 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11729
Jeff Johnsone7245742012-09-05 17:12:55 -070011730 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11731 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011732
11733 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011734 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011735
11736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011737 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011738 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11740 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011741}/*WDI_ProcessUpdateBeaconParamsReq*/
11742
11743
11744
11745/**
11746 @brief Process Send Beacon template Request function (called when Main FSM
11747 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011748
11749 @param pWDICtx: pointer to the WLAN DAL context
11750 pEventData: pointer to the event information structure
11751
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 @see
11753 @return Result of the function call
11754*/
11755WDI_Status
11756WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011757(
Jeff Johnson295189b2012-06-20 16:38:30 -070011758 WDI_ControlBlockType* pWDICtx,
11759 WDI_EventInfoType* pEventData
11760)
11761{
11762 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11763 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011764 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011765 wpt_uint16 usDataOffset = 0;
11766 wpt_uint16 usSendSize = 0;
11767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11768
11769 tSendBeaconReqMsg halSendBeaconReq;
11770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011771 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011772 -------------------------------------------------------------------------*/
11773 if (( NULL == pEventData ) ||
11774 ( NULL == pEventData->pEventData ) ||
11775 ( NULL == pEventData->pCBfnc ))
11776 {
11777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011781 }
11782
11783 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11784 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11785 /*-----------------------------------------------------------------------
11786 Get message buffer
11787 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011788 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011789 sizeof(halSendBeaconReq.sendBeaconParam),
11790 &pSendBuffer, &usDataOffset, &usSendSize))||
11791 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11792 {
11793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11794 "Unable to get send buffer in send beacon req %x %x %x",
11795 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011798 }
11799
11800 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11801 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11802 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011803 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011804 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11805 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11806 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11807 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070011808 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011809 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053011810 /* usP2PIeOffset should be atleast greater than timIeOffset */
11811 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
11812 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
11813 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
11814 {
11815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11816 "Invalid usP2PIeOffset %hu",
11817 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
11818 WDI_ASSERT(0);
11819 return WDI_STATUS_E_FAILURE;
11820 }
11821
Jeff Johnsone7245742012-09-05 17:12:55 -070011822 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011823 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070011824
Jeff Johnsone7245742012-09-05 17:12:55 -070011825 wpalMemoryCopy( pSendBuffer+usDataOffset,
11826 &halSendBeaconReq.sendBeaconParam,
11827 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011828
11829 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011830 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011831
11832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011833 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11836 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011837}/*WDI_ProcessSendBeaconParamsReq*/
11838
11839/**
11840 @brief Process Update Beacon Params Request function (called when Main FSM
11841 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011842
11843 @param pWDICtx: pointer to the WLAN DAL context
11844 pEventData: pointer to the event information structure
11845
Jeff Johnson295189b2012-06-20 16:38:30 -070011846 @see
11847 @return Result of the function call
11848*/
11849WDI_Status
11850WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011851(
Jeff Johnson295189b2012-06-20 16:38:30 -070011852 WDI_ControlBlockType* pWDICtx,
11853 WDI_EventInfoType* pEventData
11854)
11855{
11856 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11857 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011858 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 wpt_uint16 usDataOffset = 0;
11860 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011861 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11863
11864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011866 -------------------------------------------------------------------------*/
11867 if (( NULL == pEventData ) ||
11868 ( NULL == pEventData->pEventData) ||
11869 ( NULL == pEventData->pCBfnc))
11870 {
11871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011875 }
11876
Jeff Johnsone7245742012-09-05 17:12:55 -070011877 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011878 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011879 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011880 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11881 /*-----------------------------------------------------------------------
11882 Get message buffer
11883 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011884 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011885 sizeof(halUpdateProbeRspTmplParams),
11886 &pSendBuffer, &usDataOffset, &usSendSize))||
11887 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11888 {
11889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11890 "Unable to get send buffer in set bss key req %x %x %x",
11891 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011894 }
11895
11896 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011897 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011898 WDI_MAC_ADDR_LEN);
11899
Jeff Johnsone7245742012-09-05 17:12:55 -070011900 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11902
11903 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11904 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011905 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011906
11907
11908 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11909 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11910 WDI_PROBE_REQ_BITMAP_IE_LEN);
11911
Jeff Johnsone7245742012-09-05 17:12:55 -070011912 wpalMemoryCopy( pSendBuffer+usDataOffset,
11913 &halUpdateProbeRspTmplParams,
11914 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011915
11916 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011917 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011918
11919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011920 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011921 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011922 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11923 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11924 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011925}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11926
11927/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011928 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011930
11931 @param pWDICtx: pointer to the WLAN DAL context
11932 pEventData: pointer to the event information structure
11933
Jeff Johnson295189b2012-06-20 16:38:30 -070011934 @see
11935 @return Result of the function call
11936*/
11937WDI_Status
11938WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011939(
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 WDI_ControlBlockType* pWDICtx,
11941 WDI_EventInfoType* pEventData
11942)
11943{
11944
11945 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11946 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11947
11948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011950 -------------------------------------------------------------------------*/
11951 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011952 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011953 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011954 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11956 {
11957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011961 }
11962
11963 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011964 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011965 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11966
11967 /*cache the wdi nv request message here if the the first fragment
11968 * To issue the request to HAL for the next fragment */
11969 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11970 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011971 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11972 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011973 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11974
11975 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11976 pWDICtx->pRspCBUserData = pEventData->pUserData;
11977 }
11978
11979 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11980}
11981
11982/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011983 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011985
11986 @param pWDICtx: pointer to the WLAN DAL context
11987 pEventData: pointer to the event information structure
11988
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 @see
11990 @return Result of the function call
11991*/
11992WDI_Status WDI_ProcessSetMaxTxPowerReq
11993(
11994 WDI_ControlBlockType* pWDICtx,
11995 WDI_EventInfoType* pEventData
11996)
11997{
11998 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11999 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012000 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012001 wpt_uint16 usDataOffset = 0;
12002 wpt_uint16 usSendSize = 0;
12003 tSetMaxTxPwrReq halSetMaxTxPower;
12004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12005
12006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012008 -------------------------------------------------------------------------*/
12009 if (( NULL == pEventData ) ||
12010 ( NULL == pEventData->pEventData ) ||
12011 ( NULL == pEventData->pCBfnc ))
12012 {
12013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012018 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012019 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12022
12023 /*-----------------------------------------------------------------------
12024 Get message buffer
12025 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012026if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012027 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12028 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012029 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012030)))
12031 {
12032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12033 "Unable to get Set Max Tx Power req %x %x %x",
12034 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012036 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012037 }
12038
12039 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12040 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12041 WDI_MAC_ADDR_LEN);
12042
12043 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12044 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12045 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012046 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012047 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012048
12049 wpalMemoryCopy( pSendBuffer+usDataOffset,
12050 &halSetMaxTxPower.setMaxTxPwrParams,
12051 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012052
12053 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012055
12056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012057 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012058 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012059 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12060 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12061 WDI_SET_MAX_TX_POWER_RESP);
12062
Jeff Johnson295189b2012-06-20 16:38:30 -070012063}
12064
schangd82195a2013-03-13 18:41:24 -070012065/**
12066 @brief Process Set Tx Power Request function (called when Main
12067 FSM allows it)
12068
12069 @param pWDICtx: pointer to the WLAN DAL context
12070 pEventData: pointer to the event information structure
12071
12072 @see
12073 @return Result of the function call
12074*/
12075WDI_Status WDI_ProcessSetTxPowerReq
12076(
12077 WDI_ControlBlockType* pWDICtx,
12078 WDI_EventInfoType* pEventData
12079)
12080{
12081 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12082 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12083 wpt_uint8* pSendBuffer = NULL;
12084 wpt_uint16 usDataOffset = 0;
12085 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012086 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12088
12089 /*-------------------------------------------------------------------------
12090 Sanity check
12091 -------------------------------------------------------------------------*/
12092 if (( NULL == pEventData ) ||
12093 ( NULL == pEventData->pEventData ) ||
12094 ( NULL == pEventData->pCBfnc ))
12095 {
12096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12097 "%s: Invalid parameters", __func__);
12098 WDI_ASSERT(0);
12099 return WDI_STATUS_E_FAILURE;
12100 }
12101
12102 pwdiSetTxPowerParams =
12103 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12104 wdiSetTxPowerRspCb =
12105 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12106
12107 /*-----------------------------------------------------------------------
12108 Get message buffer
12109 -----------------------------------------------------------------------*/
12110 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12111 sizeof(tSetTxPwrReqParams),
12112 &pSendBuffer, &usDataOffset, &usSendSize))||
12113 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12114 )))
12115 {
12116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12117 "Unable to get Set Max Tx Power req %x %x %x",
12118 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12119 WDI_ASSERT(0);
12120 return WDI_STATUS_E_FAILURE;
12121 }
12122
Leo Changa37e2a92013-03-25 17:39:58 -070012123 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12124 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12125 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012126
12127 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12128 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12129
12130 /*-------------------------------------------------------------------------
12131 Send Set Tx Power Request to HAL
12132 -------------------------------------------------------------------------*/
12133 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12134 wdiSetTxPowerRspCb, pEventData->pUserData,
12135 WDI_SET_TX_POWER_RESP);
12136}
Jeff Johnson295189b2012-06-20 16:38:30 -070012137
12138/**
12139 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12140 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012141
12142 @param pWDICtx: pointer to the WLAN DAL context
12143 pEventData: pointer to the event information structure
12144
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 @see
12146 @return Result of the function call
12147*/
12148WDI_Status
12149WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012150(
Jeff Johnson295189b2012-06-20 16:38:30 -070012151 WDI_ControlBlockType* pWDICtx,
12152 WDI_EventInfoType* pEventData
12153)
12154{
12155 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12156 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012157 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012158 wpt_uint16 usDataOffset = 0;
12159 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12162
12163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012165 -------------------------------------------------------------------------*/
12166 if (( NULL == pEventData ) ||
12167 ( NULL == pEventData->pEventData) ||
12168 ( NULL == pEventData->pCBfnc))
12169 {
12170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012171 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012174 }
12175
Jeff Johnsone7245742012-09-05 17:12:55 -070012176 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012178 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012179 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12180 /*-----------------------------------------------------------------------
12181 Get message buffer
12182 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012183 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12184 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012185 sizeof(halSetP2PGONOAParams),
12186 &pSendBuffer, &usDataOffset, &usSendSize))||
12187 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12188 {
12189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12190 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12191 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012194 }
12195
Jeff Johnsone7245742012-09-05 17:12:55 -070012196 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012197 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012198 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012199 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12200 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012201 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012202 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012203 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012205 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012206 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12209
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 wpalMemoryCopy( pSendBuffer+usDataOffset,
12211 &halSetP2PGONOAParams,
12212 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012213
12214 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012215 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012216
12217 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012218 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012219 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12221 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12222 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012223}/*WDI_ProcessP2PGONOAReq*/
12224
Jeff Johnson295189b2012-06-20 16:38:30 -070012225
12226
12227/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012228 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012229 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012230 @param None
12231
12232 @see
12233 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012234*/
12235void
12236WDI_SetPowerStateCb
12237(
12238 wpt_status status,
12239 unsigned int dxePhyAddr,
12240 void *pContext
12241)
12242{
12243 wpt_status wptStatus;
12244 WDI_ControlBlockType *pCB = NULL;
12245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12246 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12247 {
12248 //it shouldn't happen, put an error msg
12249 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012250 /*
12251 * Trigger the event to bring the Enter BMPS req function to come
12252 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012253*/
12254 if( NULL != pContext )
12255 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012257 }
12258 else
12259 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 pCB = &gWDICb;
12262 }
12263 pCB->dxePhyAddr = dxePhyAddr;
12264 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12265 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12266 {
12267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12268 "Failed to set an event");
12269
Jeff Johnsone7245742012-09-05 17:12:55 -070012270 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012271 }
12272 return;
12273}
12274
12275
12276/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012277 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012278 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012279
12280 @param pWDICtx: pointer to the WLAN DAL context
12281 pEventData: pointer to the event information structure
12282
Jeff Johnson295189b2012-06-20 16:38:30 -070012283 @see
12284 @return Result of the function call
12285*/
12286WDI_Status
12287WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012288(
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 WDI_ControlBlockType* pWDICtx,
12290 WDI_EventInfoType* pEventData
12291)
12292{
Jeff Johnson43971f52012-07-17 12:26:56 -070012293 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012294 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012295 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012296 wpt_uint16 usDataOffset = 0;
12297 wpt_uint16 usSendSize = 0;
12298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12299
12300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 -------------------------------------------------------------------------*/
12303 if (( NULL == pEventData ) ||
12304 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12305 {
12306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012309 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012310 }
12311
12312 /*-----------------------------------------------------------------------
12313 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 0,
12318 &pSendBuffer, &usDataOffset, &usSendSize))||
12319 ( usSendSize < (usDataOffset )))
12320 {
12321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12322 "Unable to get send buffer in Enter IMPS req %x %x",
12323 pEventData, wdiEnterImpsRspCb);
12324 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012325 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012326 }
12327
12328 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012329 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12330 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012331 {
12332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12333 "WDI Init failed to reset an event");
12334
Jeff Johnsone7245742012-09-05 17:12:55 -070012335 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012336 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012337 }
12338
12339 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012340 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12341 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12343 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12344 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012345 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012346 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012347
12348 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012350 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012351 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12352 WDI_SET_POWER_STATE_TIMEOUT);
12353 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 {
12355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12356 "WDI Init failed to wait on an event");
12357
Jeff Johnsone7245742012-09-05 17:12:55 -070012358 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012359 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012360 }
12361
12362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012363 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012364 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012365 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12366 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012367
12368fail:
12369 // Release the message buffer so we don't leak
12370 wpalMemoryFree(pSendBuffer);
12371
12372failRequest:
12373 //WDA should have failure check to avoid the memory leak
12374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012375}/*WDI_ProcessEnterImpsReq*/
12376
12377/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012378 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012379 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012380
12381 @param pWDICtx: pointer to the WLAN DAL context
12382 pEventData: pointer to the event information structure
12383
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 @see
12385 @return Result of the function call
12386*/
12387WDI_Status
12388WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012389(
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 WDI_ControlBlockType* pWDICtx,
12391 WDI_EventInfoType* pEventData
12392)
12393{
12394 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012395 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012396 wpt_uint16 usDataOffset = 0;
12397 wpt_uint16 usSendSize = 0;
12398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12399
12400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012401 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012402 -------------------------------------------------------------------------*/
12403 if (( NULL == pEventData ) ||
12404 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12405 {
12406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012407 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 }
12411
12412 /*-----------------------------------------------------------------------
12413 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 0,
12418 &pSendBuffer, &usDataOffset, &usSendSize))||
12419 ( usSendSize < (usDataOffset )))
12420 {
12421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12422 "Unable to get send buffer in Exit IMPS req %x %x",
12423 pEventData, wdiExitImpsRspCb);
12424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012426 }
12427
12428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12432 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012433}/*WDI_ProcessExitImpsReq*/
12434
12435/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012436 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012437 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012438
12439 @param pWDICtx: pointer to the WLAN DAL context
12440 pEventData: pointer to the event information structure
12441
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 @see
12443 @return Result of the function call
12444*/
12445WDI_Status
12446WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012447(
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 WDI_ControlBlockType* pWDICtx,
12449 WDI_EventInfoType* pEventData
12450)
12451{
12452 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12453 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012455 wpt_uint16 usDataOffset = 0;
12456 wpt_uint16 usSendSize = 0;
12457 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012458 wpt_status wptStatus;
12459
Jeff Johnson295189b2012-06-20 16:38:30 -070012460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12461
12462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012463 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 -------------------------------------------------------------------------*/
12465 if (( NULL == pEventData ) ||
12466 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12467 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12468 {
12469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012470 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012472 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 }
12474
12475 /*-----------------------------------------------------------------------
12476 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012477 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012478 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012479 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012480 sizeof(enterBmpsReq),
12481 &pSendBuffer, &usDataOffset, &usSendSize))||
12482 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12483 {
12484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12485 "Unable to get send buffer in Enter BMPS req %x %x %x",
12486 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12487 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012488 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 }
12490
12491 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012492 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12493 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 {
12495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12496 "WDI Init failed to reset an event");
12497
Jeff Johnsone7245742012-09-05 17:12:55 -070012498 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012499 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012500 }
12501
12502 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012503 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12504 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12505 {
12506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12507 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12508 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012509 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012510 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012511
12512/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012513 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012514 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012515 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12516 WDI_SET_POWER_STATE_TIMEOUT);
12517 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 {
12519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12520 "WDI Init failed to wait on an event");
12521
Jeff Johnsone7245742012-09-05 17:12:55 -070012522 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012523 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012524 }
12525
12526 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12527
12528 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12529 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12530 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12531 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12532
12533 // For CCX and 11R Roaming
12534 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12535 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12536 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12537
12538 wpalMemoryCopy( pSendBuffer+usDataOffset,
12539 &enterBmpsReq,
12540 sizeof(enterBmpsReq));
12541
12542 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012543 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012544
12545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12549 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012550
12551fail:
12552 // Release the message buffer so we don't leak
12553 wpalMemoryFree(pSendBuffer);
12554
12555failRequest:
12556 //WDA should have failure check to avoid the memory leak
12557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012558}/*WDI_ProcessEnterBmpsReq*/
12559
12560/**
12561 @brief Process Exit BMPS Request function (called when Main FSM
12562 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012563
12564 @param pWDICtx: pointer to the WLAN DAL context
12565 pEventData: pointer to the event information structure
12566
Jeff Johnson295189b2012-06-20 16:38:30 -070012567 @see
12568 @return Result of the function call
12569*/
12570WDI_Status
12571WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012572(
Jeff Johnson295189b2012-06-20 16:38:30 -070012573 WDI_ControlBlockType* pWDICtx,
12574 WDI_EventInfoType* pEventData
12575)
12576{
12577 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12578 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012579 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012580 wpt_uint16 usDataOffset = 0;
12581 wpt_uint16 usSendSize = 0;
12582 tHalExitBmpsReqParams exitBmpsReq;
12583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12584
12585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012587 -------------------------------------------------------------------------*/
12588 if (( NULL == pEventData ) ||
12589 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12590 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12591 {
12592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012596 }
12597
12598 /*-----------------------------------------------------------------------
12599 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012600 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012601 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012602 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012603 sizeof(exitBmpsReq),
12604 &pSendBuffer, &usDataOffset, &usSendSize))||
12605 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12606 {
12607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12608 "Unable to get send buffer in Exit BMPS req %x %x %x",
12609 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012612 }
12613 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12614
Jeff Johnsone7245742012-09-05 17:12:55 -070012615 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12616
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 wpalMemoryCopy( pSendBuffer+usDataOffset,
12618 &exitBmpsReq,
12619 sizeof(exitBmpsReq));
12620
12621 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012622 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012623
12624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012627 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12628 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012629}/*WDI_ProcessExitBmpsReq*/
12630
12631/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012632 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012633 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012634
12635 @param pWDICtx: pointer to the WLAN DAL context
12636 pEventData: pointer to the event information structure
12637
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 @see
12639 @return Result of the function call
12640*/
12641WDI_Status
12642WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012643(
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 WDI_ControlBlockType* pWDICtx,
12645 WDI_EventInfoType* pEventData
12646)
12647{
12648 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12649 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012651 wpt_uint16 usDataOffset = 0;
12652 wpt_uint16 usSendSize = 0;
12653 tUapsdReqParams enterUapsdReq;
12654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12655
12656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012657 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012658 -------------------------------------------------------------------------*/
12659 if (( NULL == pEventData ) ||
12660 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12661 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12662 {
12663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012664 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012666 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012667 }
12668
12669 /*-----------------------------------------------------------------------
12670 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012671 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012672 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012673 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012674 sizeof(enterUapsdReq),
12675 &pSendBuffer, &usDataOffset, &usSendSize))||
12676 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12677 {
12678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12679 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12680 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 }
12684
12685 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12686 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12687 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12688 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12689 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12690 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12691 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12692 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012693 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012694
Jeff Johnsone7245742012-09-05 17:12:55 -070012695 wpalMemoryCopy( pSendBuffer+usDataOffset,
12696 &enterUapsdReq,
12697 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012698
12699 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012700 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012701
12702 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012703 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012704 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012705 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12706 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012707}/*WDI_ProcessEnterUapsdReq*/
12708
12709/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012710 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012711 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012712
12713 @param pWDICtx: pointer to the WLAN DAL context
12714 pEventData: pointer to the event information structure
12715
Jeff Johnson295189b2012-06-20 16:38:30 -070012716 @see
12717 @return Result of the function call
12718*/
12719WDI_Status
12720WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012721(
Jeff Johnson295189b2012-06-20 16:38:30 -070012722 WDI_ControlBlockType* pWDICtx,
12723 WDI_EventInfoType* pEventData
12724)
12725{
12726 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012727 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012728 wpt_uint16 usDataOffset = 0;
12729 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012730 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12731 wpt_uint8 bssIdx = 0;
12732
Jeff Johnson295189b2012-06-20 16:38:30 -070012733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12734
12735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 -------------------------------------------------------------------------*/
12738 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012739 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012740 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12741 {
12742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012746 }
12747
12748 /*-----------------------------------------------------------------------
12749 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012750 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012751 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012752 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012753 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012754 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012755 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012756 {
12757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12758 "Unable to get send buffer in Exit UAPSD req %x %x",
12759 pEventData, wdiExitUapsdRspCb);
12760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012762 }
12763
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012764 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12765
12766 wpalMemoryCopy( pSendBuffer+usDataOffset,
12767 &bssIdx,
12768 sizeof(wpt_uint8));
12769
12770 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12771 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12772
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012774 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012775 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012776 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12777 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012778}/*WDI_ProcessExitUapsdReq*/
12779
12780/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012783
12784 @param pWDICtx: pointer to the WLAN DAL context
12785 pEventData: pointer to the event information structure
12786
Jeff Johnson295189b2012-06-20 16:38:30 -070012787 @see
12788 @return Result of the function call
12789*/
12790WDI_Status
12791WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012792(
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 WDI_ControlBlockType* pWDICtx,
12794 WDI_EventInfoType* pEventData
12795)
12796{
12797 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12798 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012799 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 wpt_uint16 usDataOffset = 0;
12801 wpt_uint16 usSendSize = 0;
12802 tUapsdInfo uapsdAcParamsReq;
12803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12804
12805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012807 -------------------------------------------------------------------------*/
12808 if (( NULL == pEventData ) ||
12809 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12810 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12811 {
12812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012813 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012816 }
12817
12818 /*-----------------------------------------------------------------------
12819 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012820 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012821 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012822 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012823 sizeof(uapsdAcParamsReq),
12824 &pSendBuffer, &usDataOffset, &usSendSize))||
12825 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12826 {
12827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12828 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12829 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 }
12833
12834 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12835 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12836 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12837 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12838 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12839 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12840
Jeff Johnsone7245742012-09-05 17:12:55 -070012841 wpalMemoryCopy( pSendBuffer+usDataOffset,
12842 &uapsdAcParamsReq,
12843 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012844
12845 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012846 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012847
12848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012849 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012851 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12852 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012853}/*WDI_ProcessSetUapsdAcParamsReq*/
12854
12855/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012856 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012858
12859 @param pWDICtx: pointer to the WLAN DAL context
12860 pEventData: pointer to the event information structure
12861
Jeff Johnson295189b2012-06-20 16:38:30 -070012862 @see
12863 @return Result of the function call
12864*/
12865WDI_Status
12866WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012867(
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 WDI_ControlBlockType* pWDICtx,
12869 WDI_EventInfoType* pEventData
12870)
12871{
12872 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12873 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012874 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 wpt_uint16 usDataOffset = 0;
12876 wpt_uint16 usSendSize = 0;
12877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12878
12879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 -------------------------------------------------------------------------*/
12882 if (( NULL == pEventData ) ||
12883 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12884 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12885 {
12886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012887 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 }
12891
12892 /*-----------------------------------------------------------------------
12893 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012894 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012896 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12898 &pSendBuffer, &usDataOffset, &usSendSize))||
12899 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12900 {
12901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12902 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12903 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 }
12907
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 wpalMemoryCopy( pSendBuffer+usDataOffset,
12909 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12910 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012911
12912 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012913 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012914
12915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012916 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012917 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012918 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12919 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012920}/*WDI_ProcessUpdateUapsdParamsReq*/
12921
12922/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012923 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012924 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012925
12926 @param pWDICtx: pointer to the WLAN DAL context
12927 pEventData: pointer to the event information structure
12928
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 @see
12930 @return Result of the function call
12931*/
12932WDI_Status
12933WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012934(
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 WDI_ControlBlockType* pWDICtx,
12936 WDI_EventInfoType* pEventData
12937)
12938{
12939 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12940 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012941 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012942 wpt_uint16 usDataOffset = 0;
12943 wpt_uint16 usSendSize = 0;
12944 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12945
12946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12947
12948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 -------------------------------------------------------------------------*/
12951 if (( NULL == pEventData ) ||
12952 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12953 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12954 {
12955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 }
12960
12961 /*-----------------------------------------------------------------------
12962 Get message buffer
12963 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012964 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 sizeof(halRxpFilterParams),
12966 &pSendBuffer, &usDataOffset, &usSendSize))||
12967 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12968 {
12969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12970 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12971 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12972 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012973 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012974 }
12975
Jeff Johnsone7245742012-09-05 17:12:55 -070012976 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012977 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012978 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012979 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12980
Jeff Johnsone7245742012-09-05 17:12:55 -070012981 wpalMemoryCopy( pSendBuffer+usDataOffset,
12982 &halRxpFilterParams,
12983 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012984
12985 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012986 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012987
12988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012989 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012991 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12992 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012993}/*WDI_ProcessConfigureRxpFilterReq*/
12994
12995/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012996 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012997 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012998
12999 @param pWDICtx: pointer to the WLAN DAL context
13000 pEventData: pointer to the event information structure
13001
Jeff Johnson295189b2012-06-20 16:38:30 -070013002 @see
13003 @return Result of the function call
13004*/
13005WDI_Status
13006WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013007(
Jeff Johnson295189b2012-06-20 16:38:30 -070013008 WDI_ControlBlockType* pWDICtx,
13009 WDI_EventInfoType* pEventData
13010)
13011{
13012 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13013 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013014 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013015 wpt_uint16 usDataOffset = 0;
13016 wpt_uint16 usSendSize = 0;
13017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13018
13019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013021 -------------------------------------------------------------------------*/
13022 if (( NULL == pEventData ) ||
13023 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13024 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13025 {
13026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013028 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013030 }
13031
13032 /*-----------------------------------------------------------------------
13033 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013034 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013035 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013036 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013037 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13038 &pSendBuffer, &usDataOffset, &usSendSize))||
13039 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13040 {
13041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13042 "Unable to get send buffer in Set beacon filter req %x %x %x",
13043 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013046 }
13047
Jeff Johnsone7245742012-09-05 17:12:55 -070013048 wpalMemoryCopy( pSendBuffer+usDataOffset,
13049 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13050 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13051 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13052 &pwdiBeaconFilterParams->aFilters[0],
13053 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013054
13055 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013056 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013057
13058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013061 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13062 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013063}/*WDI_ProcessSetBeaconFilterReq*/
13064
13065/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013066 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013067 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013068
13069 @param pWDICtx: pointer to the WLAN DAL context
13070 pEventData: pointer to the event information structure
13071
Jeff Johnson295189b2012-06-20 16:38:30 -070013072 @see
13073 @return Result of the function call
13074*/
13075WDI_Status
13076WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013077(
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 WDI_ControlBlockType* pWDICtx,
13079 WDI_EventInfoType* pEventData
13080)
13081{
13082 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13083 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013084 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 wpt_uint16 usDataOffset = 0;
13086 wpt_uint16 usSendSize = 0;
13087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13088
13089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 -------------------------------------------------------------------------*/
13092 if (( NULL == pEventData ) ||
13093 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13094 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)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);
Jeff Johnsone7245742012-09-05 17:12:55 -070013099 return WDI_STATUS_E_FAILURE;
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_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13108 &pSendBuffer, &usDataOffset, &usSendSize))||
13109 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13110 {
13111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13112 "Unable to get send buffer in remove beacon filter req %x %x %x",
13113 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 }
13117
Jeff Johnsone7245742012-09-05 17:12:55 -070013118 wpalMemoryCopy( pSendBuffer+usDataOffset,
13119 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13120 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013121
13122 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013123 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013124
13125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013126 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013128 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13129 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013130}
13131
13132/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013133 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013134 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013135
13136 @param pWDICtx: pointer to the WLAN DAL context
13137 pEventData: pointer to the event information structure
13138
Jeff Johnson295189b2012-06-20 16:38:30 -070013139 @see
13140 @return Result of the function call
13141*/
13142WDI_Status
13143WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013144(
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 WDI_ControlBlockType* pWDICtx,
13146 WDI_EventInfoType* pEventData
13147)
13148{
13149 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13150 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013151 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013152 wpt_uint16 usDataOffset = 0;
13153 wpt_uint16 usSendSize = 0;
13154 tHalRSSIThresholds rssiThresholdsReq;
13155 WDI_Status ret_status = 0;
13156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13157
13158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 -------------------------------------------------------------------------*/
13161 if (( NULL == pEventData ) ||
13162 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13163 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13164 {
13165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013169 }
13170
13171 /*-----------------------------------------------------------------------
13172 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013175 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013176 sizeof(rssiThresholdsReq),
13177 &pSendBuffer, &usDataOffset, &usSendSize))||
13178 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13179 {
13180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13181 "Unable to get send buffer in remove beacon filter req %x %x %x",
13182 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013185 }
13186
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013189 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013190 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013191 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013192 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013193 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013194 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013196 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013197 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013199 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013200 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013201 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013203 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013205 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013206 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13207
Jeff Johnsone7245742012-09-05 17:12:55 -070013208 wpalMemoryCopy( pSendBuffer+usDataOffset,
13209 &rssiThresholdsReq,
13210 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013211
13212 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013213 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013214
13215 /*-------------------------------------------------------------------------
13216 Send Set threshold req to HAL
13217 -------------------------------------------------------------------------*/
13218 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13219 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13220 {
13221 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13222 // req. Then as a result of processing the threshold cross ind, we trigger
13223 // a Set threshold req, then we need to indicate to WDI that it needs to
13224 // go to busy state as a result of the indication as we sent a req in the
13225 // same WDI context.
13226 // Hence expected state transition is to busy.
13227 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13228 }
13229
13230 return ret_status;
13231}
13232
13233/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013234 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013236
13237 @param pWDICtx: pointer to the WLAN DAL context
13238 pEventData: pointer to the event information structure
13239
Jeff Johnson295189b2012-06-20 16:38:30 -070013240 @see
13241 @return Result of the function call
13242*/
13243WDI_Status
13244WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013245(
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 WDI_ControlBlockType* pWDICtx,
13247 WDI_EventInfoType* pEventData
13248)
13249{
13250 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13251 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013252 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 wpt_uint16 usDataOffset = 0;
13254 wpt_uint16 usSendSize = 0;
13255 tHalHostOffloadReq hostOffloadParams;
13256 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013257 wpt_uint8 ucCurrentBSSSesIdx = 0;
13258 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013259
13260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13261
13262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013263 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 -------------------------------------------------------------------------*/
13265 if (( NULL == pEventData ) ||
13266 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13267 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13268 {
13269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013270 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013271 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013272 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013273 }
13274
13275 /*-----------------------------------------------------------------------
13276 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013277 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013279 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013280 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13281 &pSendBuffer, &usDataOffset, &usSendSize))||
13282 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13283 {
13284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13285 "Unable to get send buffer in host offload req %x %x %x",
13286 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13287 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013288 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 }
13290
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013291 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13292 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13293 &pBSSSes);
13294 if ( NULL == pBSSSes )
13295 {
13296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013297 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13298 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013299 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013300 }
13301
Jeff Johnson295189b2012-06-20 16:38:30 -070013302 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13303 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013304
Jeff Johnson295189b2012-06-20 16:38:30 -070013305 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13306 {
13307 // ARP Offload
13308 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13309 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13310 4);
13311 }
13312 else
13313 {
13314 // NS Offload
13315 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13316 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13317 16);
13318
13319#ifdef WLAN_NS_OFFLOAD
13320 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13321 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13322 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13323 16);
13324 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13325 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13326 16);
13327 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13328 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13329 16);
13330 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13331 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13332 16);
13333 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13334 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13335 6);
13336 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13337 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13338 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070013339
Jeff Johnson295189b2012-06-20 16:38:30 -070013340#endif // WLAN_NS_OFFLOAD
13341 }
13342
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013343 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13344
Jeff Johnson295189b2012-06-20 16:38:30 -070013345 // copy hostOffloadParams into pSendBuffer
13346 wpalMemoryCopy( pSendBuffer+usDataOffset,
13347 &hostOffloadParams,
13348 sizeof(hostOffloadParams));
13349
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013350 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013351 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013352 // copy nsOffloadParams into pSendBuffer
13353 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013354 &nsOffloadParams,
13355 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013356 }
13357 else
13358 {
13359#ifdef WLAN_NS_OFFLOAD
13360 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13361 {
13362 // copy nsOffloadParams into pSendBuffer
13363 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13364 &nsOffloadParams,
13365 sizeof(nsOffloadParams));
13366 }
13367#endif
13368 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013369
13370 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013371 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013372
13373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013374 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13377 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013378
13379fail:
13380 // Release the message buffer so we don't leak
13381 wpalMemoryFree(pSendBuffer);
13382
13383failRequest:
13384 //WDA should have failure check to avoid the memory leak
13385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013386}/*WDI_ProcessHostOffloadReq*/
13387
13388/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013389 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013390 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013391
13392 @param pWDICtx: pointer to the WLAN DAL context
13393 pEventData: pointer to the event information structure
13394
Jeff Johnson295189b2012-06-20 16:38:30 -070013395 @see
13396 @return Result of the function call
13397*/
13398WDI_Status
13399WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013400(
Jeff Johnson295189b2012-06-20 16:38:30 -070013401 WDI_ControlBlockType* pWDICtx,
13402 WDI_EventInfoType* pEventData
13403)
13404{
13405 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13406 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013407 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 wpt_uint16 usDataOffset = 0;
13409 wpt_uint16 usSendSize = 0;
13410 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013411 wpt_uint8 ucCurrentBSSSesIdx = 0;
13412 WDI_BSSSessionType* pBSSSes = NULL;
13413
Jeff Johnson295189b2012-06-20 16:38:30 -070013414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13415
13416 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013417 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013418 -------------------------------------------------------------------------*/
13419 if (( NULL == pEventData ) ||
13420 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13421 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13422 {
13423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13424 "Invalid parameters in Keep Alive req");
13425 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013426 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013427 }
13428
13429 /*-----------------------------------------------------------------------
13430 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013431 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013432 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 sizeof(keepAliveReq),
13435 &pSendBuffer, &usDataOffset, &usSendSize))||
13436 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13437 {
13438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13439 "Unable to get send buffer in keep alive req %x %x %x",
13440 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13441 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013442 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013443 }
13444
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013445 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13446 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13447 &pBSSSes);
13448 if ( NULL == pBSSSes )
13449 {
13450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013451 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013452 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013453 }
13454
Jeff Johnson295189b2012-06-20 16:38:30 -070013455 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13456 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13457
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013458 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013459
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13461 {
13462 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13463 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13464 HAL_IPV4_ADDR_LEN);
13465 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13466 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013467 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013468 wpalMemoryCopy(keepAliveReq.destMacAddr,
13469 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13470 HAL_MAC_ADDR_LEN);
13471 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013472
13473 wpalMemoryCopy( pSendBuffer+usDataOffset,
13474 &keepAliveReq,
13475 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013476
13477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13478 "Process keep alive req %d",sizeof(keepAliveReq));
13479
13480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13481 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13482
13483 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013484 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013485
13486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13487 "Sending keep alive req to HAL");
13488
13489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13493 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013494
13495fail:
13496 // Release the message buffer so we don't leak
13497 wpalMemoryFree(pSendBuffer);
13498
13499failRequest:
13500 //WDA should have failure check to avoid the memory leak
13501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013502}/*WDI_ProcessKeepAliveReq*/
13503
13504
13505/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013506 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013507 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013508
13509 @param pWDICtx: pointer to the WLAN DAL context
13510 pEventData: pointer to the event information structure
13511
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 @see
13513 @return Result of the function call
13514*/
13515WDI_Status
13516WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013517(
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 WDI_ControlBlockType* pWDICtx,
13519 WDI_EventInfoType* pEventData
13520)
13521{
13522 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13523 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013524 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013525 wpt_uint16 usDataOffset = 0;
13526 wpt_uint16 usSendSize = 0;
13527 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013528 wpt_uint8 ucCurrentBSSSesIdx = 0;
13529 WDI_BSSSessionType* pBSSSes = NULL;
13530
Jeff Johnson295189b2012-06-20 16:38:30 -070013531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13532
13533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013535 -------------------------------------------------------------------------*/
13536 if (( NULL == pEventData ) ||
13537 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13538 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13539 {
13540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013542 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013543 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 }
13545
13546 /*-----------------------------------------------------------------------
13547 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013548 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013549 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013550 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013551 sizeof(wowlAddBcPtrnReq),
13552 &pSendBuffer, &usDataOffset, &usSendSize))||
13553 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13554 {
13555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13556 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13557 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13558 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013559 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013560 }
13561
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013562 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13563 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13564 &pBSSSes);
13565 if ( NULL == pBSSSes )
13566 {
13567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013568 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013569 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013570 }
13571
Jeff Johnsone7245742012-09-05 17:12:55 -070013572 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013574 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013575 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013576 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013577 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013578 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013579 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13580
13581 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13582 {
13583 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13584 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13585 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13586 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13587 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13588 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13589 }
13590 else
13591 {
13592 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13593 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13594 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13595 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13596 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13597 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13598
13599 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13600 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13601 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13602 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13603 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13604 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13605 }
13606
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013607 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13608
Jeff Johnson295189b2012-06-20 16:38:30 -070013609 wpalMemoryCopy( pSendBuffer+usDataOffset,
13610 &wowlAddBcPtrnReq,
13611 sizeof(wowlAddBcPtrnReq));
13612
13613 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013614 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013615
13616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013617 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13620 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013621fail:
13622 // Release the message buffer so we don't leak
13623 wpalMemoryFree(pSendBuffer);
13624
13625failRequest:
13626 //WDA should have failure check to avoid the memory leak
13627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013628}/*WDI_ProcessWowlAddBcPtrnReq*/
13629
13630/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013631 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013632 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013633
13634 @param pWDICtx: pointer to the WLAN DAL context
13635 pEventData: pointer to the event information structure
13636
Jeff Johnson295189b2012-06-20 16:38:30 -070013637 @see
13638 @return Result of the function call
13639*/
13640WDI_Status
13641WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013642(
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 WDI_ControlBlockType* pWDICtx,
13644 WDI_EventInfoType* pEventData
13645)
13646{
13647 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13648 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013649 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013650 wpt_uint16 usDataOffset = 0;
13651 wpt_uint16 usSendSize = 0;
13652 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013653 wpt_uint8 ucCurrentBSSSesIdx = 0;
13654 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13656
13657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 -------------------------------------------------------------------------*/
13660 if (( NULL == pEventData ) ||
13661 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13662 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13663 {
13664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013666 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013667 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013668 }
13669
13670 /*-----------------------------------------------------------------------
13671 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013672 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013673 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013674 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013675 sizeof(wowlDelBcPtrnReq),
13676 &pSendBuffer, &usDataOffset, &usSendSize))||
13677 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13678 {
13679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13680 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13681 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13682 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013683 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013684 }
13685
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013686 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13687 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13688 &pBSSSes);
13689 if ( NULL == pBSSSes )
13690 {
13691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013692 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013693 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013694 }
13695
Jeff Johnsone7245742012-09-05 17:12:55 -070013696 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013697 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013698
13699 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13700
Jeff Johnsone7245742012-09-05 17:12:55 -070013701 wpalMemoryCopy( pSendBuffer+usDataOffset,
13702 &wowlDelBcPtrnReq,
13703 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013704
13705 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013706 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013707
13708 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013709 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013710 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013711 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13712 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013713
13714fail:
13715 // Release the message buffer so we don't leak
13716 wpalMemoryFree(pSendBuffer);
13717
13718failRequest:
13719 //WDA should have failure check to avoid the memory leak
13720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013721}/*WDI_ProcessWowlDelBcPtrnReq*/
13722
13723/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013724 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013726
13727 @param pWDICtx: pointer to the WLAN DAL context
13728 pEventData: pointer to the event information structure
13729
Jeff Johnson295189b2012-06-20 16:38:30 -070013730 @see
13731 @return Result of the function call
13732*/
13733WDI_Status
13734WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013735(
Jeff Johnson295189b2012-06-20 16:38:30 -070013736 WDI_ControlBlockType* pWDICtx,
13737 WDI_EventInfoType* pEventData
13738)
13739{
13740 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13741 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013742 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013743 wpt_uint16 usDataOffset = 0;
13744 wpt_uint16 usSendSize = 0;
13745 tHalWowlEnterParams wowlEnterReq;
13746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13747
13748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013749 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013750 -------------------------------------------------------------------------*/
13751 if (( NULL == pEventData ) ||
13752 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13753 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13754 {
13755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013756 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013757 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 }
13760
13761 /*-----------------------------------------------------------------------
13762 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013766 sizeof(wowlEnterReq),
13767 &pSendBuffer, &usDataOffset, &usSendSize))||
13768 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13769 {
13770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13771 "Unable to get send buffer in Wowl enter req %x %x %x",
13772 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013775 }
13776
Jeff Johnsone7245742012-09-05 17:12:55 -070013777 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013778 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013779 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013780 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013781 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013783 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013785 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013786 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013787 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013789 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013790 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013791 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013792 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13793
13794#ifdef WLAN_WAKEUP_EVENTS
13795 wowlEnterReq.ucWoWEAPIDRequestEnable =
13796 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13797
13798 wowlEnterReq.ucWoWEAPOL4WayEnable =
13799 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13800
13801 wowlEnterReq.ucWowNetScanOffloadMatch =
13802 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13803
13804 wowlEnterReq.ucWowGTKRekeyError =
13805 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13806
13807 wowlEnterReq.ucWoWBSSConnLoss =
13808 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13809#endif // WLAN_WAKEUP_EVENTS
13810
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013811 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13812
Jeff Johnson295189b2012-06-20 16:38:30 -070013813 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13814 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13815 sizeof(tSirMacAddr));
13816
Jeff Johnsone7245742012-09-05 17:12:55 -070013817 wpalMemoryCopy( pSendBuffer+usDataOffset,
13818 &wowlEnterReq,
13819 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013820
13821 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013822 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013823
13824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013825 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013826 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013827 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13828 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013829}/*WDI_ProcessWowlEnterReq*/
13830
13831/**
13832 @brief Process Wowl exit Request function (called when Main FSM
13833 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013834
13835 @param pWDICtx: pointer to the WLAN DAL context
13836 pEventData: pointer to the event information structure
13837
Jeff Johnson295189b2012-06-20 16:38:30 -070013838 @see
13839 @return Result of the function call
13840*/
13841WDI_Status
13842WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013843(
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 WDI_ControlBlockType* pWDICtx,
13845 WDI_EventInfoType* pEventData
13846)
13847{
13848 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013849 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013850 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013851 wpt_uint16 usDataOffset = 0;
13852 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013853 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13855
13856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013857 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013858 -------------------------------------------------------------------------*/
13859 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013860 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013861 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13862 {
13863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013867 }
13868
13869 /*-----------------------------------------------------------------------
13870 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013871 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013872 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013873 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013874 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013876 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013877 {
13878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13879 "Unable to get send buffer in Wowl Exit req %x %x",
13880 pEventData, wdiWowlExitCb);
13881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013883 }
13884
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013885 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13886
13887 wpalMemoryCopy( pSendBuffer+usDataOffset,
13888 &wowlExitparams,
13889 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013891 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013892 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013893 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13894 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013895}/*WDI_ProcessWowlExitReq*/
13896
13897/**
13898 @brief Process Configure Apps Cpu Wakeup State Request function
13899 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013900
13901 @param pWDICtx: pointer to the WLAN DAL context
13902 pEventData: pointer to the event information structure
13903
Jeff Johnson295189b2012-06-20 16:38:30 -070013904 @see
13905 @return Result of the function call
13906*/
13907WDI_Status
13908WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013909(
Jeff Johnson295189b2012-06-20 16:38:30 -070013910 WDI_ControlBlockType* pWDICtx,
13911 WDI_EventInfoType* pEventData
13912)
13913{
13914 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13915 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013916 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013917 wpt_uint16 usDataOffset = 0;
13918 wpt_uint16 usSendSize = 0;
13919 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13921
13922 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013923 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013924 -------------------------------------------------------------------------*/
13925 if (( NULL == pEventData ) ||
13926 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13927 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13928 {
13929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013930 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013931 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013932 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013933 }
13934
13935 /*-----------------------------------------------------------------------
13936 Get message buffer
13937 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013938 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013939 sizeof(halCfgAppsCpuWakeupStateReqParams),
13940 &pSendBuffer, &usDataOffset, &usSendSize))||
13941 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13942 {
13943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13944 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13945 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013948 }
13949
Jeff Johnsone7245742012-09-05 17:12:55 -070013950 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013951 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13952
Jeff Johnsone7245742012-09-05 17:12:55 -070013953 wpalMemoryCopy( pSendBuffer+usDataOffset,
13954 &halCfgAppsCpuWakeupStateReqParams,
13955 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013956
13957 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013958 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013959
13960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013961 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13964 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13965 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013966}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13967
13968#ifdef WLAN_FEATURE_VOWIFI_11R
13969/**
13970 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13971 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013972
13973 @param pWDICtx: pointer to the WLAN DAL context
13974 pEventData: pointer to the event information structure
13975
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 @see
13977 @return Result of the function call
13978*/
13979WDI_Status
13980WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013981(
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 WDI_ControlBlockType* pWDICtx,
13983 WDI_EventInfoType* pEventData
13984)
13985{
13986 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13987 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013988 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 wpt_uint16 usDataOffset = 0;
13992 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 wpt_macAddr macBSSID;
13995 tAggrAddTsReq halAggrAddTsReq;
13996 int i;
13997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13998
13999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014000 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014001 -------------------------------------------------------------------------*/
14002 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14003 ( NULL == pEventData->pCBfnc ))
14004 {
14005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014006 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014007 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014009 }
14010 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14011 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14012 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14013 /*-------------------------------------------------------------------------
14014 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014015 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014016 -------------------------------------------------------------------------*/
14017 wpalMutexAcquire(&pWDICtx->wptMutex);
14018
14019 /*------------------------------------------------------------------------
14020 Find the BSS for which the request is made and identify WDI session
14021 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014022 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14023 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 &macBSSID))
14025 {
14026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14027 "This station does not exist in the WDI Station Table %d");
14028 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014030 }
14031
Jeff Johnsone7245742012-09-05 17:12:55 -070014032 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14033 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014034 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14036 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14037 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014038
14039 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014040 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014041 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014042
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 /*------------------------------------------------------------------------
14044 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014045 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014046 ------------------------------------------------------------------------*/
14047 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14048 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14050 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14051 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014052
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014055 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014056 }
14057
14058 wpalMutexRelease(&pWDICtx->wptMutex);
14059 /*-----------------------------------------------------------------------
14060 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014061 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014062 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014063 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014064 sizeof(tAggrAddTsParams),
14065 &pSendBuffer, &usDataOffset, &usSendSize))||
14066 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14067 {
14068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14069 "Unable to get send buffer in set bss key req %x %x %x",
14070 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14071 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014073 }
14074
Jeff Johnsone7245742012-09-05 17:12:55 -070014075 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014076 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014077 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014078 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14079
14080 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14081 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014082 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014083 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014084 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014086 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014087 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14088 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014089 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014090 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14091 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014092 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14094 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014095 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14097 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014098 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14100 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014101 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14103 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014104 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014105 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14106 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014107 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014108 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14109 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014110 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014111 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014112 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014113 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014114
14115
14116 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014117 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014118 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014119 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014120 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014121 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014122 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014123 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014124 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014125 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014126 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014127 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014128 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014129 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014130 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014131 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014132 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014133 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014134 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014135 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014136 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014137 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014138 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014139 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014140 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014141 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014142 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014144 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014145 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14146 }
14147
Jeff Johnsone7245742012-09-05 17:12:55 -070014148 wpalMemoryCopy( pSendBuffer+usDataOffset,
14149 &halAggrAddTsReq,
14150 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014151
14152 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014153 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014154
14155 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014156 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014157 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014158 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014159 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014160 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014161}/*WDI_ProcessAggrAddTSpecReq*/
14162#endif /* WLAN_FEATURE_VOWIFI_11R */
14163
14164/**
14165 @brief Process Shutdown Request function (called when Main FSM
14166 allows it)
14167
14168 @param pWDICtx: pointer to the WLAN DAL context
14169 pEventData: pointer to the event information structure
14170
14171 @see
14172 @return Result of the function call
14173*/
14174WDI_Status
14175WDI_ProcessShutdownReq
14176(
14177 WDI_ControlBlockType* pWDICtx,
14178 WDI_EventInfoType* pEventData
14179 )
14180{
14181 wpt_status wptStatus;
14182
14183
14184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14185
14186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 -------------------------------------------------------------------------*/
14189 if ( NULL == pEventData )
14190 {
14191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014192 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014193 WDI_ASSERT(0);
14194 return WDI_STATUS_E_FAILURE;
14195 }
14196
14197 wpalMutexAcquire(&pWDICtx->wptMutex);
14198
14199
14200 gWDIInitialized = eWLAN_PAL_FALSE;
14201 /*! TO DO: stop the data services */
14202 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14203 {
14204 /*Stop the STA Table !UT- check this logic again
14205 It is safer to do it here than on the response - because a stop is imminent*/
14206 WDI_STATableStop(pWDICtx);
14207
14208 /* Stop Transport Driver, DXE */
14209 WDTS_Stop(pWDICtx);
14210 }
14211
14212 /*Clear all pending request*/
14213 WDI_ClearPendingRequests(pWDICtx);
14214 /* Close Data transport*/
14215 /* FTM mode does not open Data Path */
14216 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14217 {
14218 WDTS_Close(pWDICtx);
14219 }
14220 /*Close the STA Table !UT- check this logic again*/
14221 WDI_STATableClose(pWDICtx);
14222 /*close the PAL */
14223 wptStatus = wpalClose(pWDICtx->pPALContext);
14224 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14225 {
14226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14227 "Failed to wpal Close %d", wptStatus);
14228 WDI_ASSERT(0);
14229 }
14230
14231 /*Transition back to init state*/
14232 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14233
14234 wpalMutexRelease(&pWDICtx->wptMutex);
14235
14236 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014237 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014238
14239
Jeff Johnsone7245742012-09-05 17:12:55 -070014240 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014241}/*WDI_ProcessShutdownReq*/
14242
14243/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014244 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014245========================================================================*/
14246
14247/**
14248 @brief Process Start Response function (called when a response
14249 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014250
14251 @param pWDICtx: pointer to the WLAN DAL context
14252 pEventData: pointer to the event information structure
14253
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 @see
14255 @return Result of the function call
14256*/
14257WDI_Status
14258WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014259(
Jeff Johnson295189b2012-06-20 16:38:30 -070014260 WDI_ControlBlockType* pWDICtx,
14261 WDI_EventInfoType* pEventData
14262)
14263{
14264 WDI_StartRspParamsType wdiRspParams;
14265 WDI_StartRspCb wdiStartRspCb = NULL;
14266
14267 tHalMacStartRspParams* startRspParams;
14268
14269#ifndef HAL_SELF_STA_PER_BSS
14270 WDI_AddStaParams wdiAddSTAParam = {0};
14271#endif
14272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14273
Jeff Johnsone7245742012-09-05 17:12:55 -070014274 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014277 -------------------------------------------------------------------------*/
14278 if (( NULL == pEventData ) ||
14279 ( NULL == pEventData->pEventData) ||
14280 ( NULL == wdiStartRspCb ))
14281 {
14282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014283 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014284 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014285 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014286 }
14287
14288 /*-------------------------------------------------------------------------
14289 Extract response and send it to UMAC
14290 -------------------------------------------------------------------------*/
14291 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14292 {
14293 // not enough data was received
14294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14295 "Invalid response length in Start Resp Expect %x Rcvd %x",
14296 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14297 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014299 }
14300
14301 /*-------------------------------------------------------------------------
14302 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 -------------------------------------------------------------------------*/
14305 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14306
14307 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14308 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14309 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14310 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14311 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14312 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14313 wdiRspParams.wlanReportedVersion.major =
14314 startRspParams->wcnssWlanVersion.major;
14315 wdiRspParams.wlanReportedVersion.minor =
14316 startRspParams->wcnssWlanVersion.minor;
14317 wdiRspParams.wlanReportedVersion.version =
14318 startRspParams->wcnssWlanVersion.version;
14319 wdiRspParams.wlanReportedVersion.revision =
14320 startRspParams->wcnssWlanVersion.revision;
14321 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14322 startRspParams->wcnssCrmVersionString,
14323 sizeof(wdiRspParams.wcnssSoftwareVersion));
14324 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14325 startRspParams->wcnssWlanVersionString,
14326 sizeof(wdiRspParams.wcnssHardwareVersion));
14327 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14328
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014329 /*Save the HAL Version*/
14330 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14331
Jeff Johnson295189b2012-06-20 16:38:30 -070014332 wpalMutexAcquire(&pWDICtx->wptMutex);
14333 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14334 {
14335 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14336
14337 /*Cache the start response for further use*/
14338 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 sizeof(pWDICtx->wdiCachedStartRspParams));
14341
14342 }
14343 else
14344 {
14345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14346 "Failed to start device with status %s(%d)",
14347 WDI_getHALStatusMsgString(startRspParams->status),
14348 startRspParams->status);
14349
14350 /*Set the expected state transition to stopped - because the start has
14351 failed*/
14352 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14353
14354 wpalMutexRelease(&pWDICtx->wptMutex);
14355
14356 /*Notify UMAC*/
14357 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014358
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14360
14361 /*Although the response is an error - it was processed by our function
14362 so as far as the caller is concerned this is a succesful reponse processing*/
14363 return WDI_STATUS_SUCCESS;
14364 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014365
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 wpalMutexRelease(&pWDICtx->wptMutex);
14367
14368 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14369 {
14370 /* FTM mode does not need to execute below */
14371 /* Notify UMAC */
14372 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14373 return WDI_STATUS_SUCCESS;
14374 }
14375
14376 /* START the Data transport */
14377 WDTS_startTransport(pWDICtx);
14378
14379 /*Start the STA Table !- check this logic again*/
14380 WDI_STATableStart(pWDICtx);
14381
14382#ifndef HAL_SELF_STA_PER_BSS
14383 /* Store the Self STA Index */
14384 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14385
14386 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14387 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14388 WDI_MAC_ADDR_LEN);
14389
14390 /* At this point add the self-STA */
14391
14392 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14393 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14394 /*! TO DO: wdiAddSTAParam.dpuSig */
14395 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14396 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14397 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14398
14399 //all DPU indices are the same for self STA
14400 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14401 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014402 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014403 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14404 WDI_MAC_ADDR_LEN);
14405 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14406 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14407
14408 /* Note: Since we don't get an explicit config STA request for self STA, we
14409 add the self STA upon receiving the Start response message. But the
14410 self STA entry in the table is deleted when WDI gets an explicit delete STA
14411 request */
14412 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14413#endif
14414
14415 /*Notify UMAC*/
14416 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14417
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014419}/*WDI_ProcessStartRsp*/
14420
14421
14422/**
14423 @brief Process Stop Response function (called when a response
14424 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014425
14426 @param pWDICtx: pointer to the WLAN DAL context
14427 pEventData: pointer to the event information structure
14428
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 @see
14430 @return Result of the function call
14431*/
14432WDI_Status
14433WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014434(
Jeff Johnson295189b2012-06-20 16:38:30 -070014435 WDI_ControlBlockType* pWDICtx,
14436 WDI_EventInfoType* pEventData
14437)
14438{
14439 WDI_Status wdiStatus;
14440 WDI_StopRspCb wdiStopRspCb = NULL;
14441
Jeff Johnsone7245742012-09-05 17:12:55 -070014442 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14444
Jeff Johnsone7245742012-09-05 17:12:55 -070014445 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 -------------------------------------------------------------------------*/
14449 if (( NULL == pEventData ) ||
14450 ( NULL == pEventData->pEventData) ||
14451 ( NULL == wdiStopRspCb ))
14452 {
14453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014457 }
14458
14459 /*-------------------------------------------------------------------------
14460 Extract response and send it to UMAC
14461 -------------------------------------------------------------------------*/
14462 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14463 {
14464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14465 "Invalid response length in Stop Resp %x %x",
14466 pEventData->uEventDataSize);
14467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 }
14470
14471 /*-------------------------------------------------------------------------
14472 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014475 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14476 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014477 sizeof(halMacStopRspMsg.stopRspParams));
14478
Jeff Johnsone7245742012-09-05 17:12:55 -070014479 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014480
14481 wpalMutexAcquire(&pWDICtx->wptMutex);
14482
14483 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 --------------------------------------------------------------------------*/
14486 if ( WDI_STATUS_SUCCESS != wdiStatus )
14487 {
14488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14489 "Failed to stop the device with status %s (%d)",
14490 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14491 halMacStopRspMsg.stopRspParams.status);
14492
Jeff Johnsone7245742012-09-05 17:12:55 -070014493 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14494
Jeff Johnson295189b2012-06-20 16:38:30 -070014495 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014497 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014498
Jeff Johnson295189b2012-06-20 16:38:30 -070014499 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14500
14501 /*Transition now as WDI may get preempted imediately after it sends
14502 up the Stop Response and it will not get to process the state transition
14503 from Main Rsp function*/
14504 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14505 wpalMutexRelease(&pWDICtx->wptMutex);
14506
14507 /*! TO DO: - STOP the Data transport */
14508
14509 /*Notify UMAC*/
14510 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14511
Jeff Johnsone7245742012-09-05 17:12:55 -070014512 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014513}/*WDI_ProcessStopRsp*/
14514
14515/**
14516 @brief Process Close Rsp function (called when a response
14517 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014518
14519 @param pWDICtx: pointer to the WLAN DAL context
14520 pEventData: pointer to the event information structure
14521
Jeff Johnson295189b2012-06-20 16:38:30 -070014522 @see
14523 @return Result of the function call
14524*/
14525WDI_Status
14526WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014527(
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 WDI_ControlBlockType* pWDICtx,
14529 WDI_EventInfoType* pEventData
14530)
14531{
14532 /*There is no close response comming from HAL - function just kept for
14533 simmetry */
14534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014535 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014536}/*WDI_ProcessCloseRsp*/
14537
14538
14539/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014540 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014541============================================================================*/
14542
14543/**
14544 @brief Process Init Scan Rsp function (called when a response
14545 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014546
14547 @param pWDICtx: pointer to the WLAN DAL context
14548 pEventData: pointer to the event information structure
14549
Jeff Johnson295189b2012-06-20 16:38:30 -070014550 @see
14551 @return Result of the function call
14552*/
14553WDI_Status
14554WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014555(
Jeff Johnson295189b2012-06-20 16:38:30 -070014556 WDI_ControlBlockType* pWDICtx,
14557 WDI_EventInfoType* pEventData
14558)
14559{
14560 WDI_Status wdiStatus;
14561 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014562 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014563 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14565
14566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014567 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 -------------------------------------------------------------------------*/
14569 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14570 ( NULL == pEventData->pEventData))
14571 {
14572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014576 }
14577
14578 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14579 if( NULL == wdiInitScanRspCb)
14580 {
14581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014582 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 }
14586
14587 /*-------------------------------------------------------------------------
14588 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014589 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14592 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 sizeof(halInitScanRspMsg.initScanRspParams));
14594
Jeff Johnsone7245742012-09-05 17:12:55 -070014595 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014596
14597 if ( pWDICtx->bInBmps )
14598 {
14599 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014600 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14601 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14603 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14604 WDI_ASSERT(0);
14605 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014606 }
14607
14608 /*Notify UMAC*/
14609 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14610
Jeff Johnsone7245742012-09-05 17:12:55 -070014611 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014612}/*WDI_ProcessInitScanRsp*/
14613
14614
14615/**
14616 @brief Process Start Scan Rsp function (called when a response
14617 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014618
14619 @param pWDICtx: pointer to the WLAN DAL context
14620 pEventData: pointer to the event information structure
14621
Jeff Johnson295189b2012-06-20 16:38:30 -070014622 @see
14623 @return Result of the function call
14624*/
14625WDI_Status
14626WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014627(
Jeff Johnson295189b2012-06-20 16:38:30 -070014628 WDI_ControlBlockType* pWDICtx,
14629 WDI_EventInfoType* pEventData
14630)
14631{
14632 WDI_StartScanRspParamsType wdiStartScanParams;
14633 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014634
14635 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14637
14638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014639 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014640 -------------------------------------------------------------------------*/
14641 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14642 ( NULL == pEventData->pEventData))
14643 {
14644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014645 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014648 }
14649
14650 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14651 if( NULL == wdiStartScanRspCb)
14652 {
14653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014654 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014655 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014656 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 }
14658
14659 /*-------------------------------------------------------------------------
14660 Extract response and send it to UMAC
14661 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014662 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14663 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 sizeof(halStartScanRspMsg.startScanRspParams));
14665
14666 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14667 halStartScanRspMsg.startScanRspParams.status);
14668#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014669 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014670 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014671 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 halStartScanRspMsg.startScanRspParams.startTSF,
14673 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014674#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014675
14676 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14677 {
14678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14679 "Start scan failed with status %s (%d)",
14680 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14681 halStartScanRspMsg.startScanRspParams.status);
14682 /* send the status to UMAC, don't return from here*/
14683 }
14684
14685 /*Notify UMAC*/
14686 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14687
Jeff Johnsone7245742012-09-05 17:12:55 -070014688 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014689
14690}/*WDI_ProcessStartScanRsp*/
14691
14692
14693/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014695 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014696
14697 @param pWDICtx: pointer to the WLAN DAL context
14698 pEventData: pointer to the event information structure
14699
Jeff Johnson295189b2012-06-20 16:38:30 -070014700 @see
14701 @return Result of the function call
14702*/
14703WDI_Status
14704WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014705(
Jeff Johnson295189b2012-06-20 16:38:30 -070014706 WDI_ControlBlockType* pWDICtx,
14707 WDI_EventInfoType* pEventData
14708)
14709{
14710 WDI_Status wdiStatus;
14711 tHalEndScanRspMsg halEndScanRspMsg;
14712 WDI_EndScanRspCb wdiEndScanRspCb;
14713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14714
14715 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014716 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014717 -------------------------------------------------------------------------*/
14718 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14719 ( NULL == pEventData->pEventData))
14720 {
14721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 }
14726
14727 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14728
14729 /*-------------------------------------------------------------------------
14730 Extract response and send it to UMAC
14731 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014732 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14733 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 sizeof(halEndScanRspMsg.endScanRspParams));
14735
Jeff Johnsone7245742012-09-05 17:12:55 -070014736 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014737
14738 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14739 {
14740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14741 "End Scan failed with status %s (%d )",
14742 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14743 halEndScanRspMsg.endScanRspParams.status);
14744 /* send the status to UMAC, don't return from here*/
14745 }
14746
14747 /*Notify UMAC*/
14748 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14749
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014751}/*WDI_ProcessEndScanRsp*/
14752
14753
14754/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014757
14758 @param pWDICtx: pointer to the WLAN DAL context
14759 pEventData: pointer to the event information structure
14760
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 @see
14762 @return Result of the function call
14763*/
14764WDI_Status
14765WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014766(
Jeff Johnson295189b2012-06-20 16:38:30 -070014767 WDI_ControlBlockType* pWDICtx,
14768 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014769)
Jeff Johnson295189b2012-06-20 16:38:30 -070014770{
14771 WDI_Status wdiStatus;
14772 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014773
14774 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14776
14777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014778 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 -------------------------------------------------------------------------*/
14780 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14781 ( NULL == pEventData->pEventData))
14782 {
14783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014784 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014786 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 }
14788
14789 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14790
14791 /*-------------------------------------------------------------------------
14792 Extract response and send it to UMAC
14793 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14795 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14797
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014799
14800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014801 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014802 halFinishScanRspMsg.finishScanRspParams.status);
14803
14804 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14805 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14806 {
14807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14808 "Finish Scan failed with status %s (%d)",
14809 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14810 halFinishScanRspMsg.finishScanRspParams.status);
14811 /* send the status to UMAC, don't return from here*/
14812 }
14813
14814 /*Notify UMAC*/
14815 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14816
Jeff Johnsone7245742012-09-05 17:12:55 -070014817 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014818}/*WDI_ProcessFinishScanRsp*/
14819
14820/**
14821 @brief Process Join Response function (called when a response
14822 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014823
14824 @param pWDICtx: pointer to the WLAN DAL context
14825 pEventData: pointer to the event information structure
14826
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 @see
14828 @return Result of the function call
14829*/
14830WDI_Status
14831WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014832(
Jeff Johnson295189b2012-06-20 16:38:30 -070014833 WDI_ControlBlockType* pWDICtx,
14834 WDI_EventInfoType* pEventData
14835)
14836{
14837 WDI_Status wdiStatus;
14838 WDI_JoinRspCb wdiJoinRspCb;
14839 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014840
14841 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14843
14844 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014845 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014846 -------------------------------------------------------------------------*/
14847 if (( NULL == pWDICtx ) ||
14848 ( NULL == pWDICtx->pfncRspCB ) ||
14849 ( NULL == pEventData ) ||
14850 ( NULL == pEventData->pEventData))
14851 {
14852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014853 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014856 }
14857
14858 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14859
14860 /*-------------------------------------------------------------------------
14861 Extract response and send it to UMAC
14862 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14864 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014865 sizeof(halJoinRspMsg.joinRspParams));
14866
Jeff Johnsone7245742012-09-05 17:12:55 -070014867 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014868
14869 wpalMutexAcquire(&pWDICtx->wptMutex);
14870
14871 /*-----------------------------------------------------------------------
14872 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014873 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014874 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014875 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014876 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14877 {
14878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14880 "association no longer in progress %d - mysterious HAL response",
14881 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014882
Jeff Johnsone7245742012-09-05 17:12:55 -070014883 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014884 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 }
14887
14888 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14889
14890 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014891 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014892 -----------------------------------------------------------------------*/
14893 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14894 {
14895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14896 "Join only allowed in Joining state - failure state is %d "
14897 "strange HAL response", pBSSSes->wdiAssocState);
14898
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14900
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014902 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014903 }
14904
14905
14906 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 -----------------------------------------------------------------------*/
14909 if ( WDI_STATUS_SUCCESS != wdiStatus )
14910 {
14911 /*Association was failed by HAL - remove session*/
14912 WDI_DeleteSession(pWDICtx, pBSSSes);
14913
14914 /*Association no longer in progress */
14915 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14916
14917 /*Association no longer in progress - prepare pending assoc for processing*/
14918 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014919
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 }
14921 else
14922 {
14923 /*Transition to state Joining - this may be redundant as we are supposed
14924 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014926 }
14927
14928 wpalMutexRelease(&pWDICtx->wptMutex);
14929
14930 /*Notify UMAC*/
14931 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14932
Jeff Johnsone7245742012-09-05 17:12:55 -070014933 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014934}/*WDI_ProcessJoinRsp*/
14935
14936
14937/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014940
14941 @param pWDICtx: pointer to the WLAN DAL context
14942 pEventData: pointer to the event information structure
14943
Jeff Johnson295189b2012-06-20 16:38:30 -070014944 @see
14945 @return Result of the function call
14946*/
14947WDI_Status
14948WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014949(
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 WDI_ControlBlockType* pWDICtx,
14951 WDI_EventInfoType* pEventData
14952)
14953{
14954 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14955 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014956 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014957 WDI_BSSSessionType* pBSSSes = NULL;
14958
Jeff Johnsone7245742012-09-05 17:12:55 -070014959 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14961 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014962
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14964
14965 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014966 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014967 -------------------------------------------------------------------------*/
14968 if (( NULL == pEventData ) ||
14969 ( NULL == pEventData->pEventData))
14970 {
14971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014972 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 }
14976
14977 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14978
14979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014980 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014981 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014982 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14983 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014984 sizeof(halConfigBssRspMsg.configBssRspParams));
14985
14986 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14987 halConfigBssRspMsg.configBssRspParams.status);
14988 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14989 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014990 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014991 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14992 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014993
Jeff Johnson295189b2012-06-20 16:38:30 -070014994 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014995
14996 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014997 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014998
14999 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015000 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015001
Jeff Johnson295189b2012-06-20 16:38:30 -070015002 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015003
Jeff Johnson295189b2012-06-20 16:38:30 -070015004 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015005 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015006 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15007 #endif
15008 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15009 halConfigBssRspMsg.configBssRspParams.staMac,
15010 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015011
Jeff Johnson295189b2012-06-20 16:38:30 -070015012 wpalMutexAcquire(&pWDICtx->wptMutex);
15013 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015014 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015015 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015016 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15017 wdiConfigBSSParams.macBSSID,
15018 &pBSSSes);
15019
Jeff Johnson295189b2012-06-20 16:38:30 -070015020 /*-----------------------------------------------------------------------
15021 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015022 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015023 -----------------------------------------------------------------------*/
15024 if ( NULL == pBSSSes )
15025 {
15026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15027 "Association sequence for this BSS does not yet exist "
15028 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015029
15030 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15031
Jeff Johnson295189b2012-06-20 16:38:30 -070015032 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015033 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015034 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015035
Jeff Johnson295189b2012-06-20 16:38:30 -070015036 /*Save data for this BSS*/
15037 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15038 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015040 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015043 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015044 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015045 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015046 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015047 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015048 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15049 pBSSSes->bcastStaIdx =
15050 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015051
Jeff Johnson295189b2012-06-20 16:38:30 -070015052 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015053
Jeff Johnson295189b2012-06-20 16:38:30 -070015054 /*-------------------------------------------------------------------------
15055 Add Peer STA
15056 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015057 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15059 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015060
Jeff Johnson295189b2012-06-20 16:38:30 -070015061 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015062 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015063 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015064 wdiAddSTAParam.ucHTCapable =
15065 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15066 wdiAddSTAParam.ucStaType =
15067 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15068
Jeff Johnson295189b2012-06-20 16:38:30 -070015069 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015070 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15071 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015072 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015073
15074 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15075 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15076 WDI_MAC_ADDR_LEN);
15077
Jeff Johnson295189b2012-06-20 16:38:30 -070015078 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015079 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015081 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015082 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015083 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015084 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015085 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015087 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015089 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015091
Jeff Johnson295189b2012-06-20 16:38:30 -070015092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15093 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015094
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15096 /*-------------------------------------------------------------------------
15097 Add Broadcast STA only in AP mode
15098 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015099 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070015100 WDI_BSS_OPERATIONAL_MODE_AP )
15101 {
15102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15103 "Add BCAST STA to table for index: %d",
15104 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015105
15106 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015107 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015108
Jeff Johnson295189b2012-06-20 16:38:30 -070015109 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15110 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15111 }
15112 wpalMutexRelease(&pWDICtx->wptMutex);
15113 }
15114 else
15115 {
15116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15117 "Config BSS RSP failed with status : %s(%d)",
15118 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015119 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015120 halConfigBssRspMsg.configBssRspParams.status);
15121
Jeff Johnsone7245742012-09-05 17:12:55 -070015122
Jeff Johnson295189b2012-06-20 16:38:30 -070015123 /*Association was failed by HAL - remove session*/
15124 WDI_DeleteSession(pWDICtx, pBSSSes);
15125
15126 /*Association no longer in progress */
15127 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15128
15129 /*Association no longer in progress - prepare pending assoc for processing*/
15130 WDI_DequeueAssocRequest(pWDICtx);
15131
15132 }
15133
15134 /*Notify UMAC*/
15135 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15136
Jeff Johnsone7245742012-09-05 17:12:55 -070015137 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015138}/*WDI_ProcessConfigBSSRsp*/
15139
15140
15141/**
15142 @brief Process Del BSS Response function (called when a response
15143 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015144
15145 @param pWDICtx: pointer to the WLAN DAL context
15146 pEventData: pointer to the event information structure
15147
Jeff Johnson295189b2012-06-20 16:38:30 -070015148 @see
15149 @return Result of the function call
15150*/
15151WDI_Status
15152WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015153(
Jeff Johnson295189b2012-06-20 16:38:30 -070015154 WDI_ControlBlockType* pWDICtx,
15155 WDI_EventInfoType* pEventData
15156)
15157{
15158 WDI_DelBSSRspParamsType wdiDelBSSParams;
15159 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015160 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015161 WDI_BSSSessionType* pBSSSes = NULL;
15162
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15165
15166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 -------------------------------------------------------------------------*/
15169 if (( NULL == pEventData ) ||
15170 ( NULL == pEventData->pEventData))
15171 {
15172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015173 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 }
15177
15178 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15179
15180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015181 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015182 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015183 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15184 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015185 sizeof(halDelBssRspMsg.deleteBssRspParams));
15186
15187
15188 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015189 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015190
15191 wpalMutexAcquire(&pWDICtx->wptMutex);
15192
15193 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015194 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015196 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15197 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15198 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015199
15200 /*-----------------------------------------------------------------------
15201 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015202 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015203 -----------------------------------------------------------------------*/
15204 if ( NULL == pBSSSes )
15205 {
15206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15207 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015208 "association no longer in progress - mysterious HAL response");
15209
15210 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15211
15212 wpalMutexRelease(&pWDICtx->wptMutex);
15213 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015214 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015215
15216 /*Extract BSSID for the response to UMAC*/
15217 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15218 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15219
15220 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15221
15222 /*-----------------------------------------------------------------------
15223 The current session will be deleted
15224 -----------------------------------------------------------------------*/
15225 WDI_DeleteSession(pWDICtx, pBSSSes);
15226
15227
15228 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15229 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015231 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015232 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015233
15234 /* Delete the STA's in this BSS */
15235 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15236
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 wpalMutexRelease(&pWDICtx->wptMutex);
15238
15239 /*Notify UMAC*/
15240 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15241
Jeff Johnsone7245742012-09-05 17:12:55 -070015242 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015243}/*WDI_ProcessDelBSSRsp*/
15244
15245/**
15246 @brief Process Post Assoc Rsp function (called when a response
15247 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015248
15249 @param pWDICtx: pointer to the WLAN DAL context
15250 pEventData: pointer to the event information structure
15251
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 @see
15253 @return Result of the function call
15254*/
15255WDI_Status
15256WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015257(
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 WDI_ControlBlockType* pWDICtx,
15259 WDI_EventInfoType* pEventData
15260)
15261{
15262 WDI_PostAssocRspParamsType wdiPostAssocParams;
15263 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015266 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15268
15269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 -------------------------------------------------------------------------*/
15272 if (( NULL == pEventData ) ||
15273 ( NULL == pEventData->pEventData))
15274 {
15275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 }
15280
15281 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15282
15283 /*-------------------------------------------------------------------------
15284 Extract response and send it to UMAC
15285 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015286 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15287 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 sizeof(halPostAssocRspMsg.postAssocRspParams));
15289
15290 /*Extract the Post Assoc STA Params */
15291
Jeff Johnsone7245742012-09-05 17:12:55 -070015292 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015293 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015294 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015295 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015296 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15298
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 wdiPostAssocParams.wdiStatus =
15300 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015301
15302 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15303 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015304 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15305 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015306 WDI_MAC_ADDR_LEN);
15307
15308 /* Extract Post Assoc BSS Params */
15309
Jeff Johnsone7245742012-09-05 17:12:55 -070015310 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15311 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15312 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015313
15314 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15315 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015316 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015317 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15318 .macSTA, WDI_MAC_ADDR_LEN);
15319
Jeff Johnsone7245742012-09-05 17:12:55 -070015320 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015321 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15322
Jeff Johnsone7245742012-09-05 17:12:55 -070015323 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015324 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15325
15326 wdiPostAssocParams.bssParams.ucBSSIdx =
15327 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15328
Jeff Johnsone7245742012-09-05 17:12:55 -070015329 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15331
15332 wpalMutexAcquire(&pWDICtx->wptMutex);
15333
15334 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015335 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015337 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015338 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015339 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015340
15341 /*-----------------------------------------------------------------------
15342 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015343 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015344 -----------------------------------------------------------------------*/
15345 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15348 {
15349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15350 "Association sequence for this BSS does not yet exist or "
15351 "association no longer in progress - mysterious HAL response");
15352
Jeff Johnsone7245742012-09-05 17:12:55 -070015353 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15354
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015357 }
15358
15359 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015360 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015361 -----------------------------------------------------------------------*/
15362 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15363 {
15364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15365 "Post Assoc not allowed before JOIN - failing request "
15366 "strange HAL response");
15367
Jeff Johnsone7245742012-09-05 17:12:55 -070015368 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15369
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015371 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015372 }
15373
15374 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015375 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 -----------------------------------------------------------------------*/
15377 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15378 {
15379 /*Association was failed by HAL - remove session*/
15380 WDI_DeleteSession(pWDICtx, pBSSSes);
15381 }
15382 else
15383 {
15384 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015385 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015386
15387 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015388 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015390 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015391 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015392 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015393 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015394 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15396
Jeff Johnsone7245742012-09-05 17:12:55 -070015397 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015398 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15399 }
15400
15401 /*Association no longer in progress */
15402 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15403
15404 /*Association no longer in progress - prepare pending assoc for processing*/
15405 WDI_DequeueAssocRequest(pWDICtx);
15406
15407 wpalMutexRelease(&pWDICtx->wptMutex);
15408
15409 /*Notify UMAC*/
15410 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15411
Jeff Johnsone7245742012-09-05 17:12:55 -070015412 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015413}/*WDI_ProcessPostAssocRsp*/
15414
15415/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015416 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015417 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015418
15419 @param pWDICtx: pointer to the WLAN DAL context
15420 pEventData: pointer to the event information structure
15421
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 @see
15423 @return Result of the function call
15424*/
15425WDI_Status
15426WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015427(
Jeff Johnson295189b2012-06-20 16:38:30 -070015428 WDI_ControlBlockType* pWDICtx,
15429 WDI_EventInfoType* pEventData
15430)
15431{
15432 WDI_DelSTARspParamsType wdiDelSTARsp;
15433 WDI_DelSTARspCb wdiDelSTARspCb;
15434 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015435 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15437
15438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 -------------------------------------------------------------------------*/
15441 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15442 ( NULL == pEventData->pEventData))
15443 {
15444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 }
15449
15450 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15451
15452 /*-------------------------------------------------------------------------
15453 Extract response and send it to UMAC
15454 -------------------------------------------------------------------------*/
15455 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015456 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 sizeof(halDelStaRspMsg.delStaRspParams));
15458
15459 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015460 wdiDelSTARsp.wdiStatus =
15461 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015462
15463 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15464
15465 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15466 if(staType == WDI_STA_ENTRY_SELF)
15467 {
15468 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15469
15470 /* At this point add the self-STA */
15471
15472 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15473 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15474 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15475
15476#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15477#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15478
15479 //all DPU indices are the same for self STA
15480 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15481 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15482 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15483 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15484 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15485 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015486
15487 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015488 }
15489 else
15490 {
15491 //Delete the station in the table
15492 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15493 }
15494
15495 /*Notify UMAC*/
15496 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15497
Jeff Johnsone7245742012-09-05 17:12:55 -070015498 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015499}/*WDI_ProcessDelSTARsp*/
15500
15501
15502/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015503 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015504==========================================================================*/
15505
15506/**
15507 @brief Process Set BSS Key Rsp function (called when a response
15508 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015509
15510 @param pWDICtx: pointer to the WLAN DAL context
15511 pEventData: pointer to the event information structure
15512
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 @see
15514 @return Result of the function call
15515*/
15516WDI_Status
15517WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015518(
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 WDI_ControlBlockType* pWDICtx,
15520 WDI_EventInfoType* pEventData
15521)
15522{
15523 WDI_Status wdiStatus;
15524 eHalStatus halStatus;
15525 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15527
15528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015529 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015530 -------------------------------------------------------------------------*/
15531 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15532 ( NULL == pEventData->pEventData))
15533 {
15534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015535 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015538 }
15539
15540 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15541
15542 /*-------------------------------------------------------------------------
15543 Extract response and send it to UMAC
15544 -------------------------------------------------------------------------*/
15545 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015546 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015547
15548 if ( eHAL_STATUS_SUCCESS != halStatus )
15549 {
15550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15551 "Set BSS Key failed with status %s (%d)",
15552 WDI_getHALStatusMsgString(halStatus),
15553 halStatus);
15554 /* send the status to UMAC, don't return from here*/
15555 }
15556
15557 /*Notify UMAC*/
15558 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15559
Jeff Johnsone7245742012-09-05 17:12:55 -070015560 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015561}/*WDI_ProcessSetBssKeyRsp*/
15562
15563/**
15564 @brief Process Remove BSS Key Rsp function (called when a response
15565 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015566
15567 @param pWDICtx: pointer to the WLAN DAL context
15568 pEventData: pointer to the event information structure
15569
Jeff Johnson295189b2012-06-20 16:38:30 -070015570 @see
15571 @return Result of the function call
15572*/
15573WDI_Status
15574WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015575(
Jeff Johnson295189b2012-06-20 16:38:30 -070015576 WDI_ControlBlockType* pWDICtx,
15577 WDI_EventInfoType* pEventData
15578)
15579{
15580 WDI_Status wdiStatus;
15581 eHalStatus halStatus;
15582 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15584
15585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 -------------------------------------------------------------------------*/
15588 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15589 ( NULL == pEventData->pEventData))
15590 {
15591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 }
15596
15597 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15598
15599 /*-------------------------------------------------------------------------
15600 Extract response and send it to UMAC
15601 -------------------------------------------------------------------------*/
15602 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015603 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015604
15605 if ( eHAL_STATUS_SUCCESS != halStatus )
15606 {
15607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15608 "Remove BSS Key failed with status %s (%d )",
15609 WDI_getHALStatusMsgString(halStatus),
15610 halStatus);
15611 /* send the status to UMAC, don't return from here*/
15612 }
15613
15614 /*Notify UMAC*/
15615 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15616
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015618}/*WDI_ProcessSetBssKeyRsp*/
15619
15620
15621/**
15622 @brief Process Set STA Key Rsp function (called when a response
15623 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015624
15625 @param pWDICtx: pointer to the WLAN DAL context
15626 pEventData: pointer to the event information structure
15627
Jeff Johnson295189b2012-06-20 16:38:30 -070015628 @see
15629 @return Result of the function call
15630*/
15631WDI_Status
15632WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015633(
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 WDI_ControlBlockType* pWDICtx,
15635 WDI_EventInfoType* pEventData
15636)
15637{
15638 WDI_Status wdiStatus;
15639 eHalStatus halStatus;
15640 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15642
15643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015645 -------------------------------------------------------------------------*/
15646 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15647 ( NULL == pEventData->pEventData))
15648 {
15649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 }
15654
15655 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15656
15657 /*-------------------------------------------------------------------------
15658 Extract response and send it to UMAC
15659 -------------------------------------------------------------------------*/
15660 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015662
15663 if ( eHAL_STATUS_SUCCESS != halStatus )
15664 {
15665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15666 "Set STA Key failed with status %s (%d)",
15667 WDI_getHALStatusMsgString(halStatus),
15668 halStatus);
15669 /* send the status to UMAC, don't return from here*/
15670 }
15671
15672 /*Notify UMAC*/
15673 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15674
Jeff Johnsone7245742012-09-05 17:12:55 -070015675 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015676}/*WDI_ProcessSetSTAKeyRsp*/
15677
15678/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015679 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015681
15682 @param pWDICtx: pointer to the WLAN DAL context
15683 pEventData: pointer to the event information structure
15684
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 @see
15686 @return Result of the function call
15687*/
15688WDI_Status
15689WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015690(
Jeff Johnson295189b2012-06-20 16:38:30 -070015691 WDI_ControlBlockType* pWDICtx,
15692 WDI_EventInfoType* pEventData
15693)
15694{
15695 WDI_Status wdiStatus;
15696 eHalStatus halStatus;
15697 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15699
15700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015701 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 -------------------------------------------------------------------------*/
15703 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15704 ( NULL == pEventData->pEventData))
15705 {
15706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015707 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 }
15711
15712 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15713
15714 /*-------------------------------------------------------------------------
15715 Extract response and send it to UMAC
15716 -------------------------------------------------------------------------*/
15717 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015718 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015719
15720 if ( eHAL_STATUS_SUCCESS != halStatus )
15721 {
15722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15723 "Remove STA Key failed with status %s (%d)",
15724 WDI_getHALStatusMsgString(halStatus),
15725 halStatus);
15726 /* send the status to UMAC, don't return from here*/
15727 }
15728
15729 /*Notify UMAC*/
15730 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15731
Jeff Johnsone7245742012-09-05 17:12:55 -070015732 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015733}/*WDI_ProcessRemoveStaKeyRsp*/
15734
15735/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015736 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015737 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015738
15739 @param pWDICtx: pointer to the WLAN DAL context
15740 pEventData: pointer to the event information structure
15741
Jeff Johnson295189b2012-06-20 16:38:30 -070015742 @see
15743 @return Result of the function call
15744*/
15745WDI_Status
15746WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015747(
Jeff Johnson295189b2012-06-20 16:38:30 -070015748 WDI_ControlBlockType* pWDICtx,
15749 WDI_EventInfoType* pEventData
15750)
15751{
15752 WDI_Status wdiStatus;
15753 eHalStatus halStatus;
15754 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15756
15757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015758 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 -------------------------------------------------------------------------*/
15760 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15761 ( NULL == pEventData->pEventData))
15762 {
15763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015764 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015767 }
15768
15769 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15770
15771 /*-------------------------------------------------------------------------
15772 Extract response and send it to UMAC
15773 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015774 wpalMemoryCopy( &halStatus,
15775 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 sizeof(halStatus));
15777
Jeff Johnsone7245742012-09-05 17:12:55 -070015778 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015779
15780 if ( eHAL_STATUS_SUCCESS != halStatus )
15781 {
15782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15783 "Set STA Key failed with status %s (%d)",
15784 WDI_getHALStatusMsgString(halStatus),
15785 halStatus);
15786 /* send the status to UMAC, don't return from here*/
15787 }
15788
15789 /*Notify UMAC*/
15790 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15791
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015793}/*WDI_ProcessSetSTABcastKeyRsp*/
15794
15795/**
15796 @brief Process Remove STA Bcast Key Rsp function (called when a
15797 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015798
15799 @param pWDICtx: pointer to the WLAN DAL context
15800 pEventData: pointer to the event information structure
15801
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 @see
15803 @return Result of the function call
15804*/
15805WDI_Status
15806WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015807(
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 WDI_ControlBlockType* pWDICtx,
15809 WDI_EventInfoType* pEventData
15810)
15811{
15812 WDI_Status wdiStatus;
15813 eHalStatus halStatus;
15814 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15816
15817 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015818 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015819 -------------------------------------------------------------------------*/
15820 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15821 ( NULL == pEventData->pEventData))
15822 {
15823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015824 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015827 }
15828
15829 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15830
15831 /*-------------------------------------------------------------------------
15832 Extract response and send it to UMAC
15833 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015834 wpalMemoryCopy( &halStatus,
15835 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 sizeof(halStatus));
15837
Jeff Johnsone7245742012-09-05 17:12:55 -070015838 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015839
15840 if ( eHAL_STATUS_SUCCESS != halStatus )
15841 {
15842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15843 "Remove STA Key failed with status %s (%d)",
15844 WDI_getHALStatusMsgString(halStatus),
15845 halStatus);
15846 /* send the status to UMAC, don't return from here*/
15847 }
15848
15849 /*Notify UMAC*/
15850 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15851
Jeff Johnsone7245742012-09-05 17:12:55 -070015852 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015853}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15854
15855
15856/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015857 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015858==========================================================================*/
15859
15860/**
15861 @brief Process Add TSpec Rsp function (called when a response
15862 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015863
15864 @param pWDICtx: pointer to the WLAN DAL context
15865 pEventData: pointer to the event information structure
15866
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 @see
15868 @return Result of the function call
15869*/
15870WDI_Status
15871WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015872(
Jeff Johnson295189b2012-06-20 16:38:30 -070015873 WDI_ControlBlockType* pWDICtx,
15874 WDI_EventInfoType* pEventData
15875)
15876{
15877 WDI_Status wdiStatus;
15878 eHalStatus halStatus;
15879 WDI_AddTsRspCb wdiAddTsRspCb;
15880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15881
15882 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 -------------------------------------------------------------------------*/
15885 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15886 ( NULL == pEventData->pEventData))
15887 {
15888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015889 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 }
15893
15894 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15895
15896 /*-------------------------------------------------------------------------
15897 Extract response and send it to UMAC
15898 -------------------------------------------------------------------------*/
15899 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015900 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015901
15902 /*Notify UMAC*/
15903 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15904
Jeff Johnsone7245742012-09-05 17:12:55 -070015905 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015906}/*WDI_ProcessAddTSpecRsp*/
15907
15908
15909/**
15910 @brief Process Del TSpec Rsp function (called when a response
15911 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015912
15913 @param pWDICtx: pointer to the WLAN DAL context
15914 pEventData: pointer to the event information structure
15915
Jeff Johnson295189b2012-06-20 16:38:30 -070015916 @see
15917 @return Result of the function call
15918*/
15919WDI_Status
15920WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015921(
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 WDI_ControlBlockType* pWDICtx,
15923 WDI_EventInfoType* pEventData
15924)
15925{
15926 WDI_Status wdiStatus;
15927 eHalStatus halStatus;
15928 WDI_DelTsRspCb wdiDelTsRspCb;
15929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15930
15931 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015932 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015933 -------------------------------------------------------------------------*/
15934 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15935 ( NULL == pEventData->pEventData))
15936 {
15937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015941 }
15942
15943 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15944
15945 /*-------------------------------------------------------------------------
15946 Extract response and send it to UMAC
15947 -------------------------------------------------------------------------*/
15948 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015949 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015950
15951 /*Notify UMAC*/
15952 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15953
Jeff Johnsone7245742012-09-05 17:12:55 -070015954 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015955}/*WDI_ProcessDelTSpecRsp*/
15956
15957/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015958 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015960
15961 @param pWDICtx: pointer to the WLAN DAL context
15962 pEventData: pointer to the event information structure
15963
Jeff Johnson295189b2012-06-20 16:38:30 -070015964 @see
15965 @return Result of the function call
15966*/
15967WDI_Status
15968WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015969(
Jeff Johnson295189b2012-06-20 16:38:30 -070015970 WDI_ControlBlockType* pWDICtx,
15971 WDI_EventInfoType* pEventData
15972)
15973{
15974 WDI_Status wdiStatus;
15975 eHalStatus halStatus;
15976 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15978
15979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015980 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015981 -------------------------------------------------------------------------*/
15982 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15983 ( NULL == pEventData->pEventData))
15984 {
15985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015986 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015989 }
15990
15991 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15992
15993 /*-------------------------------------------------------------------------
15994 Extract response and send it to UMAC
15995 -------------------------------------------------------------------------*/
15996 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015997 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015998
15999 /*Notify UMAC*/
16000 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16001
Jeff Johnsone7245742012-09-05 17:12:55 -070016002 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016003}/*WDI_ProcessUpdateEDCAParamsRsp*/
16004
16005
16006/**
16007 @brief Process Add BA Rsp function (called when a response
16008 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016009
16010 @param pWDICtx: pointer to the WLAN DAL context
16011 pEventData: pointer to the event information structure
16012
Jeff Johnson295189b2012-06-20 16:38:30 -070016013 @see
16014 @return Result of the function call
16015*/
16016WDI_Status
16017WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016018(
Jeff Johnson295189b2012-06-20 16:38:30 -070016019 WDI_ControlBlockType* pWDICtx,
16020 WDI_EventInfoType* pEventData
16021)
16022{
16023 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16024
16025 tAddBASessionRspParams halBASessionRsp;
16026 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16027
Jeff Johnsone7245742012-09-05 17:12:55 -070016028
Jeff Johnson295189b2012-06-20 16:38:30 -070016029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16030
16031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016032 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016033 -------------------------------------------------------------------------*/
16034 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16035 ( NULL == pEventData->pEventData))
16036 {
16037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016038 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016041 }
16042
16043 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16044
16045 /*-------------------------------------------------------------------------
16046 Extract response and send it to UMAC
16047 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016048 wpalMemoryCopy( &halBASessionRsp,
16049 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016050 sizeof(halBASessionRsp));
16051
16052 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16053
Jeff Johnson43971f52012-07-17 12:26:56 -070016054 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016055 {
16056 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16057 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16058 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16059 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16060 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16061 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16062 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16063 }
16064
16065 /*Notify UMAC*/
16066 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16067
Jeff Johnsone7245742012-09-05 17:12:55 -070016068 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016069}/*WDI_ProcessAddSessionBARsp*/
16070
16071
16072/**
16073 @brief Process Del BA Rsp function (called when a response
16074 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016075
16076 @param pWDICtx: pointer to the WLAN DAL context
16077 pEventData: pointer to the event information structure
16078
Jeff Johnson295189b2012-06-20 16:38:30 -070016079 @see
16080 @return Result of the function call
16081*/
16082WDI_Status
16083WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016084(
Jeff Johnson295189b2012-06-20 16:38:30 -070016085 WDI_ControlBlockType* pWDICtx,
16086 WDI_EventInfoType* pEventData
16087)
16088{
16089 WDI_Status wdiStatus;
16090 eHalStatus halStatus;
16091 WDI_DelBARspCb wdiDelBARspCb;
16092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16093
16094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016096 -------------------------------------------------------------------------*/
16097 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16098 ( NULL == pEventData->pEventData))
16099 {
16100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016104 }
16105
16106 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16107
16108 /*-------------------------------------------------------------------------
16109 Extract response and send it to UMAC
16110 -------------------------------------------------------------------------*/
16111 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016112 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016113
16114 if ( eHAL_STATUS_SUCCESS == halStatus )
16115 {
16116 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16117 }
16118
16119 /*Notify UMAC*/
16120 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16121
Jeff Johnsone7245742012-09-05 17:12:55 -070016122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016123}/*WDI_ProcessDelBARsp*/
16124
16125#ifdef FEATURE_WLAN_CCX
16126/**
16127 @brief Process TSM Stats Rsp function (called when a response
16128 is being received over the bus from HAL)
16129
16130 @param pWDICtx: pointer to the WLAN DAL context
16131 pEventData: pointer to the event information structure
16132
16133 @see
16134 @return Result of the function call
16135*/
16136WDI_Status
16137WDI_ProcessTsmStatsRsp
16138(
16139 WDI_ControlBlockType* pWDICtx,
16140 WDI_EventInfoType* pEventData
16141)
16142{
16143 WDI_TsmRspCb wdiTsmStatsRspCb;
16144 tTsmStatsRspMsg halTsmStatsRspMsg;
16145 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16147
16148 /*-------------------------------------------------------------------------
16149 Sanity check
16150 -------------------------------------------------------------------------*/
16151 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16152 ( NULL == pEventData->pEventData))
16153 {
16154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016155 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 WDI_ASSERT(0);
16157 return WDI_STATUS_E_FAILURE;
16158 }
16159
16160 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16161
16162 /*-------------------------------------------------------------------------
16163 Unpack HAL Response Message - the header was already extracted by the
16164 main Response Handling procedure
16165 -------------------------------------------------------------------------*/
16166 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16167 pEventData->pEventData,
16168 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16169
16170 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16171 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16172 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16173 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16174 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16175 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16176 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16177 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16178 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16179 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16180 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16181 halTsmStatsRspMsg.tsmStatsRspParams.status);
16182
16183 /*Notify UMAC*/
16184 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16185
16186 return WDI_STATUS_SUCCESS;
16187}/*WDI_ProcessTsmStatsRsp*/
16188
16189#endif
16190
16191
16192
16193/**
16194 @brief Process Flush AC Rsp function (called when a response
16195 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016196
16197 @param pWDICtx: pointer to the WLAN DAL context
16198 pEventData: pointer to the event information structure
16199
Jeff Johnson295189b2012-06-20 16:38:30 -070016200 @see
16201 @return Result of the function call
16202*/
16203WDI_Status
16204WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016205(
Jeff Johnson295189b2012-06-20 16:38:30 -070016206 WDI_ControlBlockType* pWDICtx,
16207 WDI_EventInfoType* pEventData
16208)
16209{
16210 WDI_Status wdiStatus;
16211 eHalStatus halStatus;
16212 WDI_FlushAcRspCb wdiFlushAcRspCb;
16213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16214
16215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016216 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016217 -------------------------------------------------------------------------*/
16218 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16219 ( NULL == pEventData->pEventData))
16220 {
16221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016222 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 }
16226
16227 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16228
16229 /*-------------------------------------------------------------------------
16230 Extract response and send it to UMAC
16231 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016232 wpalMemoryCopy( &halStatus,
16233 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 sizeof(halStatus));
16235
Jeff Johnsone7245742012-09-05 17:12:55 -070016236 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016237
16238 /*Notify UMAC*/
16239 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16240
Jeff Johnsone7245742012-09-05 17:12:55 -070016241 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016242}/*WDI_ProcessFlushAcRsp*/
16243
16244/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016247
16248 @param pWDICtx: pointer to the WLAN DAL context
16249 pEventData: pointer to the event information structure
16250
Jeff Johnson295189b2012-06-20 16:38:30 -070016251 @see
16252 @return Result of the function call
16253*/
16254WDI_Status
16255WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016256(
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 WDI_ControlBlockType* pWDICtx,
16258 WDI_EventInfoType* pEventData
16259)
16260{
16261 WDI_Status wdiStatus;
16262 eHalStatus halStatus;
16263 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16265
16266 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016267 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016268 -------------------------------------------------------------------------*/
16269 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16270 ( NULL == pEventData->pEventData))
16271 {
16272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016273 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016274 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016276 }
16277
16278 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16279
16280 /*-------------------------------------------------------------------------
16281 Extract response and send it to UMAC
16282 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016283 wpalMemoryCopy( &halStatus,
16284 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016285 sizeof(halStatus));
16286
Jeff Johnsone7245742012-09-05 17:12:55 -070016287 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016288
16289 /*Notify UMAC*/
16290 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16291
Jeff Johnsone7245742012-09-05 17:12:55 -070016292 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016293}/*WDI_ProcessBtAmpEventRsp*/
16294
16295
16296/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016297 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016298 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016299
16300 @param pWDICtx: pointer to the WLAN DAL context
16301 pEventData: pointer to the event information structure
16302
Jeff Johnson295189b2012-06-20 16:38:30 -070016303 @see
16304 @return Result of the function call
16305*/
16306WDI_Status
16307WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016308(
Jeff Johnson295189b2012-06-20 16:38:30 -070016309 WDI_ControlBlockType* pWDICtx,
16310 WDI_EventInfoType* pEventData
16311)
16312{
16313 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16314 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16315 tAddStaSelfRspMsg halAddStaSelfRsp;
16316 WDI_AddStaParams wdiAddSTAParam = {0};
16317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16318
16319 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016320 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 -------------------------------------------------------------------------*/
16322 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16323 ( NULL == pEventData->pEventData))
16324 {
16325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016326 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016327 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016329 }
16330
Jeff Johnsone7245742012-09-05 17:12:55 -070016331 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016332 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16333
16334 /*-------------------------------------------------------------------------
16335 Extract response and send it to UMAC
16336 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016337 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16338 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016339 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16340
16341
Jeff Johnsone7245742012-09-05 17:12:55 -070016342 wdiAddSTASelfParams.wdiStatus =
16343 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016344
Jeff Johnsone7245742012-09-05 17:12:55 -070016345 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016346 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016347 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016348 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016349 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016350 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16351
16352 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16353 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16354 WDI_MAC_ADDR_LEN);
16355
16356
16357#ifdef HAL_SELF_STA_PER_BSS
16358
16359 /* At this point add the self-STA */
16360
16361 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16362 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16363 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16364
16365 //all DPU indices are the same for self STA
16366
16367 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016368 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016369 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16370 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16371 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16372 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16373 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16374
16375 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16376 WDI_MAC_ADDR_LEN);
16377
16378 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16379 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16380
Jeff Johnsone7245742012-09-05 17:12:55 -070016381 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016382 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16383 {
16384 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16385 }
16386#endif
16387
16388 /*Notify UMAC*/
16389 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16390
Jeff Johnsone7245742012-09-05 17:12:55 -070016391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016392}/*WDI_ProcessAddSTASelfRsp*/
16393
16394
16395
16396/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016399
16400 @param pWDICtx: pointer to the WLAN DAL context
16401 pEventData: pointer to the event information structure
16402
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 @see
16404 @return Result of the function call
16405*/
16406WDI_Status
16407WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016408(
Jeff Johnson295189b2012-06-20 16:38:30 -070016409 WDI_ControlBlockType* pWDICtx,
16410 WDI_EventInfoType* pEventData
16411)
16412{
16413 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16414 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16415 tDelStaSelfRspParams delStaSelfRspParams;
16416 wpt_uint8 ucStaIdx;
16417
16418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16419
16420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016422 -------------------------------------------------------------------------*/
16423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16424 ( NULL == pEventData->pEventData))
16425 {
16426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 }
16431
16432 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16433
16434 /*-------------------------------------------------------------------------
16435 Extract response and send it to UMAC
16436 -------------------------------------------------------------------------*/
16437
Jeff Johnsone7245742012-09-05 17:12:55 -070016438 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016439 (wpt_uint8*)pEventData->pEventData,
16440 sizeof(tDelStaSelfRspParams));
16441
Jeff Johnsone7245742012-09-05 17:12:55 -070016442 wdiDelStaSelfRspParams.wdiStatus =
16443 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016444
Jeff Johnsone7245742012-09-05 17:12:55 -070016445 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016446 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16447 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16448 {
16449 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016450 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016451 delStaSelfRspParams.selfMacAddr,
16452 &ucStaIdx);
16453 if(WDI_STATUS_E_FAILURE == wdiStatus)
16454 {
16455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016456 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016459 }
16460 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16461 }
16462
16463 /*Notify UMAC*/
16464 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16465
16466 return WDI_STATUS_SUCCESS;
16467}
16468
Jeff Johnsone7245742012-09-05 17:12:55 -070016469#ifdef FEATURE_OEM_DATA_SUPPORT
16470/**
16471 @brief Start Oem Data Rsp function (called when a
16472 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016473
Jeff Johnsone7245742012-09-05 17:12:55 -070016474 @param pWDICtx: pointer to the WLAN DAL context
16475 pEventData: pointer to the event information structure
16476
16477 @see
16478 @return Result of the function call
16479*/
16480#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16481
16482WDI_Status
16483WDI_ProcessStartOemDataRsp
16484(
16485 WDI_ControlBlockType* pWDICtx,
16486 WDI_EventInfoType* pEventData
16487)
16488{
16489 WDI_oemDataRspCb wdiOemDataRspCb;
16490 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16491 tStartOemDataRspParams* halStartOemDataRspParams;
16492
16493 /*-------------------------------------------------------------------------
16494 Sanity check
16495 -------------------------------------------------------------------------*/
16496 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16497 ( NULL == pEventData->pEventData))
16498 {
16499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016500 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016501 WDI_ASSERT(0);
16502 return WDI_STATUS_E_FAILURE;
16503 }
16504
16505 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16506
16507 /*-------------------------------------------------------------------------
16508 Extract response and send it to UMAC
16509 -------------------------------------------------------------------------*/
16510 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16511
16512
16513 //It is the responsibility of the application code to check for failure
16514 //conditions!
16515
16516 //Allocate memory for WDI OEM DATA RSP structure
16517 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16518
16519 if(NULL == wdiOemDataRspParams)
16520 {
16521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16522 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16523 pWDICtx, pEventData, pEventData->pEventData);
16524 WDI_ASSERT(0);
16525 return WDI_STATUS_E_FAILURE;
16526 }
16527
16528 /* Populate WDI structure members */
16529 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16530
16531 /*Notify UMAC*/
16532 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16533
16534 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16535 wpalMemoryFree(wdiOemDataRspParams);
16536
16537 return WDI_STATUS_SUCCESS;
16538}/*WDI_PrcoessStartOemDataRsp*/
16539#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016540
16541/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016542 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016543===========================================================================*/
16544
16545/**
16546 @brief Process Channel Switch Rsp function (called when a response
16547 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016548
16549 @param pWDICtx: pointer to the WLAN DAL context
16550 pEventData: pointer to the event information structure
16551
Jeff Johnson295189b2012-06-20 16:38:30 -070016552 @see
16553 @return Result of the function call
16554*/
16555WDI_Status
16556WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016557(
Jeff Johnson295189b2012-06-20 16:38:30 -070016558 WDI_ControlBlockType* pWDICtx,
16559 WDI_EventInfoType* pEventData
16560)
16561{
16562 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16563 WDI_SwitchChRspCb wdiChSwitchRspCb;
16564 tSwitchChannelRspParams halSwitchChannelRsp;
16565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16566
16567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016569 -------------------------------------------------------------------------*/
16570 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16571 ( NULL == pEventData->pEventData))
16572 {
16573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 }
16578
16579 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16580
16581 /*-------------------------------------------------------------------------
16582 Extract response and send it to UMAC
16583 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016584 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016585 (wpt_uint8*)pEventData->pEventData,
16586 sizeof(halSwitchChannelRsp));
16587
Jeff Johnsone7245742012-09-05 17:12:55 -070016588 wdiSwitchChRsp.wdiStatus =
16589 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016590 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16591
16592#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016594#endif
16595
16596 /*Notify UMAC*/
16597 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16598
Jeff Johnsone7245742012-09-05 17:12:55 -070016599 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016600}/*WDI_ProcessChannelSwitchRsp*/
16601
16602
16603/**
16604 @brief Process Config STA Rsp function (called when a response
16605 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016606
16607 @param pWDICtx: pointer to the WLAN DAL context
16608 pEventData: pointer to the event information structure
16609
Jeff Johnson295189b2012-06-20 16:38:30 -070016610 @see
16611 @return Result of the function call
16612*/
16613WDI_Status
16614WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016615(
Jeff Johnson295189b2012-06-20 16:38:30 -070016616 WDI_ControlBlockType* pWDICtx,
16617 WDI_EventInfoType* pEventData
16618)
16619{
16620 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16621 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16622 WDI_AddStaParams wdiAddSTAParam;
16623
16624 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016625 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016626
Jeff Johnsone7245742012-09-05 17:12:55 -070016627 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16629
16630 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016631 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016632 -------------------------------------------------------------------------*/
16633 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16634 ( NULL == pEventData->pEventData))
16635 {
16636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016637 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016638 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 }
16641
16642 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16643
16644 /*-------------------------------------------------------------------------
16645 Extract response and send it to UMAC
16646 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016647 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16648 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016649 sizeof(halConfigStaRsp.configStaRspParams));
16650
16651
16652 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16653 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16654 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16655 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16656 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16657
16658 /* MAC Address of STA - take from cache as it does not come back in the
16659 response*/
16660 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016661 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016662 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016663
16664 wdiCfgSTAParams.wdiStatus =
16665 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016666
16667 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16668 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16669 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16670
16671 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16672 {
16673 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16674 {
16675 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016676 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016677 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16678 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016679
Jeff Johnson295189b2012-06-20 16:38:30 -070016680 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016681 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016682 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016683 wdiAddSTAParam.ucHTCapable =
16684 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16685 wdiAddSTAParam.ucStaType =
16686 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16687
Jeff Johnson295189b2012-06-20 16:38:30 -070016688 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016689 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16690 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016691 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016692
16693 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16694 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16695 WDI_MAC_ADDR_LEN);
16696
16697 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16698 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16699 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016700
16701 if ( NULL == pBSSSes )
16702 {
16703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16704 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016705
Jeff Johnson295189b2012-06-20 16:38:30 -070016706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016707 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016708 }
16709
16710 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016711 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016712 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016713 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016714 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016715 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016717 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016718 halConfigStaRsp.configStaRspParams.ucBcastSig;
16719 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16720 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016721
Jeff Johnson295189b2012-06-20 16:38:30 -070016722 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16723 }
16724 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16725 {
16726 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16727
Jeff Johnsone7245742012-09-05 17:12:55 -070016728 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016729 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016730 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016731 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016732 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016733 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016734 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016735 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016736 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016737 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016738 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016739 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016740 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016741 halConfigStaRsp.configStaRspParams.ucUcastSig;
16742 }
16743 }
16744
16745 /*Notify UMAC*/
16746 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16747
Jeff Johnsone7245742012-09-05 17:12:55 -070016748 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016749}/*WDI_ProcessConfigStaRsp*/
16750
16751
16752/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016753 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016754 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016755
16756 @param pWDICtx: pointer to the WLAN DAL context
16757 pEventData: pointer to the event information structure
16758
Jeff Johnson295189b2012-06-20 16:38:30 -070016759 @see
16760 @return Result of the function call
16761*/
16762WDI_Status
16763WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016764(
Jeff Johnson295189b2012-06-20 16:38:30 -070016765 WDI_ControlBlockType* pWDICtx,
16766 WDI_EventInfoType* pEventData
16767)
16768{
16769 WDI_Status wdiStatus;
16770 eHalStatus halStatus;
16771 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16772
16773 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016774 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16776
16777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016778 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016779 -------------------------------------------------------------------------*/
16780 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16781 ( NULL == pEventData->pEventData))
16782 {
16783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016784 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016786 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016787 }
16788
16789 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16790
16791 wpalMutexAcquire(&pWDICtx->wptMutex);
16792
16793 /*If the link is being transitioned to idle - the BSS is to be deleted
16794 - this type of ending a session is possible when UMAC has failed an
16795 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016796 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16798 {
16799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016800 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016801 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016802 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16803 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16804 &pBSSSes);
16805
Jeff Johnson295189b2012-06-20 16:38:30 -070016806 /*-----------------------------------------------------------------------
16807 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016808 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016809 -----------------------------------------------------------------------*/
16810 if ( NULL == pBSSSes )
16811 {
16812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16813 "Set link response received outside association session");
16814 }
16815 else
16816 {
16817 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16818 will be del BSS coming after this to stop the beaconing & cleaning up the
16819 sessions*/
16820 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16821 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16822 {
16823 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016824 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016825 -----------------------------------------------------------------------*/
16826 WDI_DeleteSession(pWDICtx, pBSSSes);
16827
16828 /*-----------------------------------------------------------------------
16829 Check to see if this association is in progress - if so disable the
16830 flag as this has ended
16831 -----------------------------------------------------------------------*/
16832 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016833 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016834 /*Association no longer in progress */
16835 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16836 /*Association no longer in progress - prepare pending assoc for processing*/
16837 WDI_DequeueAssocRequest(pWDICtx);
16838 }
16839 }
16840 }
16841 }
16842 /* If the link state has been set to POST ASSOC, reset the "association in
16843 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016844 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016845 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16846 {
16847 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16848 WDI_DequeueAssocRequest(pWDICtx);
16849 }
16850
16851 wpalMutexRelease(&pWDICtx->wptMutex);
16852
16853 /*-------------------------------------------------------------------------
16854 Extract response and send it to UMAC
16855 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016856 wpalMemoryCopy( &halStatus,
16857 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016858 sizeof(halStatus));
16859
Jeff Johnsone7245742012-09-05 17:12:55 -070016860 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016861
16862 /*Notify UMAC*/
16863 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16864
Jeff Johnsone7245742012-09-05 17:12:55 -070016865 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016866}/*WDI_ProcessSetLinkStateRsp*/
16867
16868/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016869 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016870 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016871
16872 @param pWDICtx: pointer to the WLAN DAL context
16873 pEventData: pointer to the event information structure
16874
Jeff Johnson295189b2012-06-20 16:38:30 -070016875 @see
16876 @return Result of the function call
16877*/
16878WDI_Status
16879WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016880(
Jeff Johnson295189b2012-06-20 16:38:30 -070016881 WDI_ControlBlockType* pWDICtx,
16882 WDI_EventInfoType* pEventData
16883)
16884{
16885 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16886 WDI_GetStatsRspCb wdiGetStatsRspCb;
16887 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016888
Jeff Johnson295189b2012-06-20 16:38:30 -070016889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16890
16891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016893 -------------------------------------------------------------------------*/
16894 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16895 ( NULL == pEventData->pEventData))
16896 {
16897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016901 }
16902
16903 /*-------------------------------------------------------------------------
16904 Extract response and send it to UMAC
16905 -------------------------------------------------------------------------*/
16906 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16907
16908 /*allocate the stats response buffer */
16909 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16910 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16911 + sizeof(WDI_GetStatsRspParamsType));
16912
16913 if(NULL == wdiGetStatsRsp)
16914 {
16915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16916 "Failed to allocate memory in Get Stats Response %x %x %x ",
16917 pWDICtx, pEventData, pEventData->pEventData);
16918 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016920 }
16921
16922 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16923
16924 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16925 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16926 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16927 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16928 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16929 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16930
16931 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16932 wpalMemoryCopy(wdiGetStatsRsp + 1,
16933 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16934 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16935
16936 /*Notify UMAC*/
16937 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16938
16939 wpalMemoryFree(wdiGetStatsRsp);
16940
Jeff Johnsone7245742012-09-05 17:12:55 -070016941 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016942}/*WDI_ProcessGetStatsRsp*/
16943
Srinivas Girigowda2471d832013-01-25 13:33:11 -080016944#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
16945/**
16946 @brief Process Get Roam Rssi Rsp function (called when a response is
16947 being received over the bus from HAL)
16948
16949 @param pWDICtx: pointer to the WLAN DAL context
16950 pEventData: pointer to the event information structure
16951
16952 @see
16953 @return Result of the function call
16954*/
16955WDI_Status
16956WDI_ProcessGetRoamRssiRsp
16957(
16958 WDI_ControlBlockType* pWDICtx,
16959 WDI_EventInfoType* pEventData
16960)
16961{
16962 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
16963 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
16964 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
16965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16966
16967 /*-------------------------------------------------------------------------
16968 Sanity check
16969 -------------------------------------------------------------------------*/
16970 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16971 ( NULL == pEventData->pEventData))
16972 {
16973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16974 "%s: Invalid parameters", __func__);
16975 WDI_ASSERT(0);
16976 return WDI_STATUS_E_FAILURE;
16977 }
16978
16979 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
16980 if(NULL == wdiGetRoamRssiRspCb)
16981 {
16982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16983 "%s: call back function is NULL", __func__);
16984 WDI_ASSERT(0);
16985 return WDI_STATUS_E_FAILURE;
16986 }
16987
16988 /*-------------------------------------------------------------------------
16989 Extract response and send it to UMAC
16990 -------------------------------------------------------------------------*/
16991 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
16992 pEventData->pEventData,
16993 sizeof(halRoamRssiRspParams.roamRssiRspParams));
16994
16995 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
16996 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
16997 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
16998
16999 /*Notify UMAC*/
17000 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17001
17002 return WDI_STATUS_SUCCESS;
17003}/*WDI_ProcessGetRoamRssiRsp*/
17004#endif
17005
Jeff Johnson295189b2012-06-20 16:38:30 -070017006
17007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017008 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017010
17011 @param pWDICtx: pointer to the WLAN DAL context
17012 pEventData: pointer to the event information structure
17013
Jeff Johnson295189b2012-06-20 16:38:30 -070017014 @see
17015 @return Result of the function call
17016*/
17017WDI_Status
17018WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017019(
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 WDI_ControlBlockType* pWDICtx,
17021 WDI_EventInfoType* pEventData
17022)
17023{
17024 WDI_Status wdiStatus;
17025 eHalStatus halStatus;
17026 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17028
17029 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017030 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017031 -------------------------------------------------------------------------*/
17032 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17033 ( NULL == pEventData->pEventData))
17034 {
17035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017036 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017037 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017039 }
17040
17041 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17042
17043 /*-------------------------------------------------------------------------
17044 Extract response and send it to UMAC
17045 -------------------------------------------------------------------------*/
17046 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017047 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017048
17049 /*Notify UMAC*/
17050 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17051
Jeff Johnsone7245742012-09-05 17:12:55 -070017052 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017053}/*WDI_ProcessUpdateCfgRsp*/
17054
17055
17056
17057/**
17058 @brief Process Add BA Rsp function (called when a response
17059 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017060
17061 @param pWDICtx: pointer to the WLAN DAL context
17062 pEventData: pointer to the event information structure
17063
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 @see
17065 @return Result of the function call
17066*/
17067WDI_Status
17068WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017069(
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 WDI_ControlBlockType* pWDICtx,
17071 WDI_EventInfoType* pEventData
17072)
17073{
17074 WDI_AddBARspCb wdiAddBARspCb;
17075
17076 tAddBARspParams halAddBARsp;
17077 WDI_AddBARspinfoType wdiAddBARsp;
17078
17079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17080
17081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017082 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 -------------------------------------------------------------------------*/
17084 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17085 ( NULL == pEventData->pEventData))
17086 {
17087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 }
17092
17093 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17094
17095 /*-------------------------------------------------------------------------
17096 Extract response and send it to UMAC
17097 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017098 wpalMemoryCopy( &halAddBARsp,
17099 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 sizeof(halAddBARsp));
17101
17102 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17103
Jeff Johnson43971f52012-07-17 12:26:56 -070017104 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017105 {
17106 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17107 }
17108
17109 /*Notify UMAC*/
17110 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17111
Jeff Johnsone7245742012-09-05 17:12:55 -070017112 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017113}/*WDI_ProcessAddSessionBARsp*/
17114
17115/**
17116 @brief Process Add BA Rsp function (called when a response
17117 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017118
17119 @param pWDICtx: pointer to the WLAN DAL context
17120 pEventData: pointer to the event information structure
17121
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 @see
17123 @return Result of the function call
17124*/
17125WDI_Status
17126WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017127(
Jeff Johnson295189b2012-06-20 16:38:30 -070017128 WDI_ControlBlockType* pWDICtx,
17129 WDI_EventInfoType* pEventData
17130)
17131{
17132 WDI_TriggerBARspCb wdiTriggerBARspCb;
17133
17134 tTriggerBARspParams* halTriggerBARsp;
17135 tTriggerBaRspCandidate* halBaCandidate;
17136 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17137 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17138 wpt_uint16 index;
17139 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017140 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17142
17143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017145 -------------------------------------------------------------------------*/
17146 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17147 ( NULL == pEventData->pEventData))
17148 {
17149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 }
17154
17155 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17156
17157 /*-------------------------------------------------------------------------
17158 Extract response and send it to UMAC
17159 -------------------------------------------------------------------------*/
17160 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17161
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017162 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17163
17164 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17165 {
17166 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017167 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017168 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017169
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017170 if(NULL == wdiTriggerBARsp)
17171 {
17172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17173 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17174 pWDICtx, pEventData, pEventData->pEventData);
17175 WDI_ASSERT(0);
17176 return WDI_STATUS_E_FAILURE;
17177 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017178
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017179 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17180
Jeff Johnson295189b2012-06-20 16:38:30 -070017181 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017182 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017183 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17184
17185 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17186 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17187
17188 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17189 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017190 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017191 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17192 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17193 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017194 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017195 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017196 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017197 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17198 }
17199 wdiTriggerBARspCandidate++;
17200 halBaCandidate++;
17201 }
17202 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017203 else
17204 {
17205 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17206
17207 if(NULL == wdiTriggerBARsp)
17208 {
17209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17210 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17211 pWDICtx, pEventData, pEventData->pEventData);
17212 WDI_ASSERT(0);
17213 return WDI_STATUS_E_FAILURE;
17214 }
17215
17216 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17217
17218 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017219
17220 /*Notify UMAC*/
17221 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17222
17223 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017224 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017225}/*WDI_ProcessAddSessionBARsp*/
17226
17227/**
17228 @brief Process Update Beacon Params Rsp function (called when a response
17229 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017230
17231 @param pWDICtx: pointer to the WLAN DAL context
17232 pEventData: pointer to the event information structure
17233
Jeff Johnson295189b2012-06-20 16:38:30 -070017234 @see
17235 @return Result of the function call
17236*/
17237WDI_Status
17238WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017239(
Jeff Johnson295189b2012-06-20 16:38:30 -070017240 WDI_ControlBlockType* pWDICtx,
17241 WDI_EventInfoType* pEventData
17242)
17243{
17244 WDI_Status wdiStatus;
17245 eHalStatus halStatus;
17246 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17248
17249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017251 -------------------------------------------------------------------------*/
17252 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17253 ( NULL == pEventData->pEventData))
17254 {
17255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017259 }
17260
17261 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17262
17263 /*-------------------------------------------------------------------------
17264 Extract response and send it to UMAC
17265 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017266 wpalMemoryCopy( &halStatus,
17267 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017268 sizeof(halStatus));
17269
Jeff Johnsone7245742012-09-05 17:12:55 -070017270 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017271
17272 /*Notify UMAC*/
17273 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17274
Jeff Johnsone7245742012-09-05 17:12:55 -070017275 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017276}/*WDI_ProcessUpdateBeaconParamsRsp*/
17277
17278/**
17279 @brief Process Send Beacon template Rsp function (called when a response
17280 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017281
17282 @param pWDICtx: pointer to the WLAN DAL context
17283 pEventData: pointer to the event information structure
17284
Jeff Johnson295189b2012-06-20 16:38:30 -070017285 @see
17286 @return Result of the function call
17287*/
17288WDI_Status
17289WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017290(
Jeff Johnson295189b2012-06-20 16:38:30 -070017291 WDI_ControlBlockType* pWDICtx,
17292 WDI_EventInfoType* pEventData
17293)
17294{
17295 WDI_Status wdiStatus;
17296 eHalStatus halStatus;
17297 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17299
17300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017302 -------------------------------------------------------------------------*/
17303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17304 ( NULL == pEventData->pEventData))
17305 {
17306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017310 }
17311
17312 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17313
17314 /*-------------------------------------------------------------------------
17315 Extract response and send it to UMAC
17316 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017317 wpalMemoryCopy( &halStatus,
17318 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017319 sizeof(halStatus));
17320
Jeff Johnsone7245742012-09-05 17:12:55 -070017321 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017322
17323 /*Notify UMAC*/
17324 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17325
Jeff Johnsone7245742012-09-05 17:12:55 -070017326 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017327}/*WDI_ProcessSendBeaconParamsRsp*/
17328
Jeff Johnsone7245742012-09-05 17:12:55 -070017329
Jeff Johnson295189b2012-06-20 16:38:30 -070017330/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017331 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017332 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017333
17334 @param pWDICtx: pointer to the WLAN DAL context
17335 pEventData: pointer to the event information structure
17336
Jeff Johnson295189b2012-06-20 16:38:30 -070017337 @see
17338 @return Result of the function call
17339*/
17340WDI_Status
17341WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017342(
Jeff Johnson295189b2012-06-20 16:38:30 -070017343 WDI_ControlBlockType* pWDICtx,
17344 WDI_EventInfoType* pEventData
17345)
17346{
17347 WDI_Status wdiStatus;
17348 eHalStatus halStatus;
17349 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17351
17352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017354 -------------------------------------------------------------------------*/
17355 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17356 ( NULL == pEventData->pEventData))
17357 {
17358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017359 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017362 }
17363
17364 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17365
17366 /*-------------------------------------------------------------------------
17367 Extract response and send it to UMAC
17368 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017369 wpalMemoryCopy( &halStatus,
17370 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017371 sizeof(halStatus));
17372
Jeff Johnsone7245742012-09-05 17:12:55 -070017373 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017374
17375 /*Notify UMAC*/
17376 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17377
Jeff Johnsone7245742012-09-05 17:12:55 -070017378 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017379}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17380
17381 /**
17382 @brief Process Set Max Tx Power Rsp function (called when a response
17383 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017384
17385 @param pWDICtx: pointer to the WLAN DAL context
17386 pEventData: pointer to the event information structure
17387
Jeff Johnson295189b2012-06-20 16:38:30 -070017388 @see
17389 @return Result of the function call
17390*/
17391WDI_Status
17392WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017393(
Jeff Johnson295189b2012-06-20 16:38:30 -070017394 WDI_ControlBlockType* pWDICtx,
17395 WDI_EventInfoType* pEventData
17396)
17397{
17398 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017399
Jeff Johnson295189b2012-06-20 16:38:30 -070017400 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017401
Jeff Johnson295189b2012-06-20 16:38:30 -070017402 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17404
17405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017406 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017407 -------------------------------------------------------------------------*/
17408 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17409 ( NULL == pEventData->pEventData))
17410 {
17411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017412 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017415 }
17416
17417 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17418
17419 /*-------------------------------------------------------------------------
17420 Extract response and send it to UMAC
17421 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017422 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17423 pEventData->pEventData,
17424 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017425
17426 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17427 {
17428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17429 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017430 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017432 }
17433
Jeff Johnsone7245742012-09-05 17:12:55 -070017434 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017435 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017437
17438 /*Notify UMAC*/
17439 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17440
Jeff Johnsone7245742012-09-05 17:12:55 -070017441 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017442}
17443
schangd82195a2013-03-13 18:41:24 -070017444 /**
17445 @brief Process Set Tx Power Rsp function (called when a response
17446 is being received over the bus from HAL)
17447
17448 @param pWDICtx: pointer to the WLAN DAL context
17449 pEventData: pointer to the event information structure
17450
17451 @see
17452 @return Result of the function call
17453*/
17454WDI_Status
17455WDI_ProcessSetTxPowerRsp
17456(
17457 WDI_ControlBlockType* pWDICtx,
17458 WDI_EventInfoType* pEventData
17459)
17460{
17461 tSetTxPwrRspMsg halTxpowerrsp;
17462 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17463 WDA_SetTxPowerRspCb wdiReqStatusCb;
17464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17465
17466 /*-------------------------------------------------------------------------
17467 Sanity check
17468 -------------------------------------------------------------------------*/
17469 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17470 ( NULL == pEventData->pEventData))
17471 {
17472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17473 "%s: Invalid parameters", __func__);
17474 WDI_ASSERT(0);
17475 return WDI_STATUS_E_FAILURE;
17476 }
17477
17478 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17479
17480 /*-------------------------------------------------------------------------
17481 Extract response and send it to UMAC
17482 -------------------------------------------------------------------------*/
17483 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17484 pEventData->pEventData,
17485 sizeof(halTxpowerrsp.setTxPwrRspParams));
17486
17487 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17488 {
17489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17490 "Error status returned in Set Tx Power Response ");
17491 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17492 return WDI_STATUS_E_FAILURE;
17493 }
17494
17495 wdiSetTxPowerRspMsg.wdiStatus =
17496 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17497
17498 /*Notify UMAC*/
17499 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17500
17501 return WDI_STATUS_SUCCESS;
17502}
17503
Jeff Johnson295189b2012-06-20 16:38:30 -070017504/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017505 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017506 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017507
17508 @param pWDICtx: pointer to the WLAN DAL context
17509 pEventData: pointer to the event information structure
17510
Jeff Johnson295189b2012-06-20 16:38:30 -070017511 @see
17512 @return Result of the function call
17513*/
17514WDI_Status
17515WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017516(
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 WDI_ControlBlockType* pWDICtx,
17518 WDI_EventInfoType* pEventData
17519)
17520{
17521 WDI_Status wdiStatus;
17522 eHalStatus halStatus;
17523 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17525
17526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017528 -------------------------------------------------------------------------*/
17529 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17530 ( NULL == pEventData->pEventData))
17531 {
17532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017536 }
17537
17538 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17539
17540 /*-------------------------------------------------------------------------
17541 Extract response and send it to UMAC
17542 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017543 wpalMemoryCopy( &halStatus,
17544 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017545 sizeof(halStatus));
17546
Jeff Johnsone7245742012-09-05 17:12:55 -070017547 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017548
17549 /*Notify UMAC*/
17550 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17551
Jeff Johnsone7245742012-09-05 17:12:55 -070017552 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017553}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017555 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017556 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017557
17558 @param pWDICtx: pointer to the WLAN DAL context
17559 pEventData: pointer to the event information structure
17560
Jeff Johnson295189b2012-06-20 16:38:30 -070017561 @see
17562 @return Result of the function call
17563*/
17564WDI_Status
17565WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017566(
Jeff Johnson295189b2012-06-20 16:38:30 -070017567 WDI_ControlBlockType* pWDICtx,
17568 WDI_EventInfoType* pEventData
17569)
17570{
17571 WDI_Status wdiStatus;
17572 eHalStatus halStatus;
17573 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017574 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17576
17577 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017578 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017579 -------------------------------------------------------------------------*/
17580 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17581 ( NULL == pEventData->pEventData))
17582 {
17583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017587 }
17588
17589 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17590
17591 /*-------------------------------------------------------------------------
17592 Extract response and send it to UMAC
17593 -------------------------------------------------------------------------*/
17594 halStatus = *((eHalStatus*)pEventData->pEventData);
17595
Jeff Johnsone7245742012-09-05 17:12:55 -070017596 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017597
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017598 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17599 * Other module states are taken care by PMC.
17600 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17601 */
17602 if (wdiStatus != WDI_STATUS_SUCCESS) {
17603
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17605 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17606 halStatus);
17607 /* Call Back is not required as we are putting the DXE in FULL
17608 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017609 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17610
17611 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17613 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17614 WDI_ASSERT(0);
17615 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017616 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017617 /*Notify UMAC*/
17618 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17619
Jeff Johnsone7245742012-09-05 17:12:55 -070017620 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017621}/*WDI_ProcessEnterImpsRsp*/
17622
17623/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017624 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017625 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017626
17627 @param pWDICtx: pointer to the WLAN DAL context
17628 pEventData: pointer to the event information structure
17629
Jeff Johnson295189b2012-06-20 16:38:30 -070017630 @see
17631 @return Result of the function call
17632*/
17633WDI_Status
17634WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017635(
Jeff Johnson295189b2012-06-20 16:38:30 -070017636 WDI_ControlBlockType* pWDICtx,
17637 WDI_EventInfoType* pEventData
17638)
17639{
17640 WDI_Status wdiStatus;
17641 eHalStatus halStatus;
17642 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017643 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17645
17646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017648 -------------------------------------------------------------------------*/
17649 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17650 ( NULL == pEventData->pEventData))
17651 {
17652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017656 }
17657
17658 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17659
17660 /*-------------------------------------------------------------------------
17661 Extract response and send it to UMAC
17662 -------------------------------------------------------------------------*/
17663 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017664 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017665
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053017666 if (halStatus != eHAL_STATUS_SUCCESS)
17667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17668 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
17669
Jeff Johnson295189b2012-06-20 16:38:30 -070017670 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017671 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17672 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17673 {
17674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17675 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17676 WDI_ASSERT(0);
17677 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017678 /*Notify UMAC*/
17679 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17680
Jeff Johnsone7245742012-09-05 17:12:55 -070017681 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017682}/*WDI_ProcessExitImpsRsp*/
17683
17684/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017685 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017687
17688 @param pWDICtx: pointer to the WLAN DAL context
17689 pEventData: pointer to the event information structure
17690
Jeff Johnson295189b2012-06-20 16:38:30 -070017691 @see
17692 @return Result of the function call
17693*/
17694WDI_Status
17695WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017696(
Jeff Johnson295189b2012-06-20 16:38:30 -070017697 WDI_ControlBlockType* pWDICtx,
17698 WDI_EventInfoType* pEventData
17699)
17700{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017701 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17702 tHalEnterBmpsRspParams halEnterBmpsRsp;
17703 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17704 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017705 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17707
17708 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017709 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017710 -------------------------------------------------------------------------*/
17711 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17712 ( NULL == pEventData->pEventData))
17713 {
17714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017715 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017718 }
17719
Jeff Johnson295189b2012-06-20 16:38:30 -070017720 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017721 Extract response and send it to UMAC
17722 -------------------------------------------------------------------------*/
17723 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17724 {
17725 wpalMemoryCopy( &halEnterBmpsRsp,
17726 pEventData->pEventData,
17727 sizeof(halEnterBmpsRsp));
17728
17729 //Used to print debug message
17730 halStatus = halEnterBmpsRsp.status;
17731 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17732 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17733 }
17734 else
17735 {
17736 halStatus = *((eHalStatus*)pEventData->pEventData);
17737 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17738 }
17739
17740 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017741
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017742 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17743 * Other module states are taken care by PMC.
17744 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17745 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017746 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17747 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017748
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017750 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17751 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017752 /* Call Back is not required as we are putting the DXE in FULL
17753 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017754 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17755 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17756 {
17757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17758 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17759 WDI_ASSERT(0);
17760 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017761 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017762 }
17763
Jeff Johnson295189b2012-06-20 16:38:30 -070017764 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017765 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017766
Jeff Johnsone7245742012-09-05 17:12:55 -070017767 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017768}/*WDI_ProcessEnterBmpsRsp*/
17769
17770/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017771 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017772 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017773
17774 @param pWDICtx: pointer to the WLAN DAL context
17775 pEventData: pointer to the event information structure
17776
Jeff Johnson295189b2012-06-20 16:38:30 -070017777 @see
17778 @return Result of the function call
17779*/
17780WDI_Status
17781WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017782(
Jeff Johnson295189b2012-06-20 16:38:30 -070017783 WDI_ControlBlockType* pWDICtx,
17784 WDI_EventInfoType* pEventData
17785)
17786{
Jeff Johnson295189b2012-06-20 16:38:30 -070017787 eHalStatus halStatus;
17788 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017789 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017790 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17791 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17793
17794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017796 -------------------------------------------------------------------------*/
17797 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17798 ( NULL == pEventData->pEventData))
17799 {
17800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017801 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017802 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017804 }
17805
17806 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17807
17808 /*-------------------------------------------------------------------------
17809 Extract response and send it to UMAC
17810 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017811
17812 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17813 {
17814 wpalMemoryCopy( &halExitBmpsRsp,
17815 pEventData->pEventData,
17816 sizeof(halExitBmpsRsp));
17817
17818 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17819 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17820 }
17821 else
17822 {
17823 halStatus = *((eHalStatus*)pEventData->pEventData);
17824 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17825 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017826
17827 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017828 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17829 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17830 {
17831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17832 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17833 WDI_ASSERT(0);
17834 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017835 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17836
17837 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017838 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017839
Jeff Johnsone7245742012-09-05 17:12:55 -070017840 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017841}/*WDI_ProcessExitBmpsRsp*/
17842
17843/**
17844 @brief Process Enter UAPSD Rsp function (called when a response
17845 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017846
17847 @param pWDICtx: pointer to the WLAN DAL context
17848 pEventData: pointer to the event information structure
17849
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 @see
17851 @return Result of the function call
17852*/
17853WDI_Status
17854WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017855(
Jeff Johnson295189b2012-06-20 16:38:30 -070017856 WDI_ControlBlockType* pWDICtx,
17857 WDI_EventInfoType* pEventData
17858)
17859{
Jeff Johnson295189b2012-06-20 16:38:30 -070017860 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017861 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017862 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017863 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17864
Jeff Johnson295189b2012-06-20 16:38:30 -070017865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17866
17867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017869 -------------------------------------------------------------------------*/
17870 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17871 ( NULL == pEventData->pEventData))
17872 {
17873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017877 }
17878
17879 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17880
17881 /*-------------------------------------------------------------------------
17882 Extract response and send it to UMAC
17883 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017884 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17885 {
17886 wpalMemoryCopy( &halEnterUapsdRsp,
17887 pEventData->pEventData,
17888 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017889
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017890 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17891 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17892 }
17893 else
17894 {
17895 halStatus = *((eHalStatus*)pEventData->pEventData);
17896 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17897 }
17898
17899 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 {
17901 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17902 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17903 // the traffic to decide when to suspend the trigger frames when there is no traffic
17904 // activity on the trigger enabled ACs
17905 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17906
17907#ifdef WLAN_PERF
17908 // Increment the BD signature to refresh the fast path BD utilization
17909 pWDICtx->uBdSigSerialNum++;
17910#endif
17911 }
17912
17913 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017914 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017915
Jeff Johnsone7245742012-09-05 17:12:55 -070017916 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017917}/*WDI_ProcessEnterUapsdRsp*/
17918
17919/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017920 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017921 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_ProcessExitUapsdRsp
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{
Jeff Johnson295189b2012-06-20 16:38:30 -070017936 eHalStatus halStatus;
17937 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017938 tHalExitUapsdRspParams halExitUapsdRsp;
17939 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017940 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17941
17942 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017943 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017944 -------------------------------------------------------------------------*/
17945 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17946 ( NULL == pEventData->pEventData))
17947 {
17948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017949 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017950 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017952 }
17953
17954 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17955
17956 /*-------------------------------------------------------------------------
17957 Extract response and send it to UMAC
17958 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017959 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17960 {
17961 wpalMemoryCopy( &halExitUapsdRsp,
17962 pEventData->pEventData,
17963 sizeof(halExitUapsdRsp));
17964
17965 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17966 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17967 }
17968 else
17969 {
17970 halStatus = *((eHalStatus*)pEventData->pEventData);
17971 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17972 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017973 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17974 // directly instead of the FW WQ.
17975 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17976
17977#ifdef WLAN_PERF
17978 // Increment the BD signature to refresh the fast path BD utilization
17979 pWDICtx->uBdSigSerialNum++;
17980#endif
17981
17982 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017983 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017984
Jeff Johnsone7245742012-09-05 17:12:55 -070017985 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017986}/*WDI_ProcessExitUapsdRsp*/
17987
17988/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017989 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017990 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017991
17992 @param pWDICtx: pointer to the WLAN DAL context
17993 pEventData: pointer to the event information structure
17994
Jeff Johnson295189b2012-06-20 16:38:30 -070017995 @see
17996 @return Result of the function call
17997*/
17998WDI_Status
17999WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018000(
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 WDI_ControlBlockType* pWDICtx,
18002 WDI_EventInfoType* pEventData
18003)
18004{
18005 WDI_Status wdiStatus;
18006 eHalStatus halStatus;
18007 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18009
18010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018012 -------------------------------------------------------------------------*/
18013 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18014 ( NULL == pEventData->pEventData))
18015 {
18016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018020 }
18021
18022 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18023
18024 /*-------------------------------------------------------------------------
18025 Extract response and send it to UMAC
18026 -------------------------------------------------------------------------*/
18027 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018028 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018029
18030 /*Notify UMAC*/
18031 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18032
Jeff Johnsone7245742012-09-05 17:12:55 -070018033 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018034}/*WDI_ProcessSetUapsdAcParamsRsp*/
18035
18036/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018037 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018039
18040 @param pWDICtx: pointer to the WLAN DAL context
18041 pEventData: pointer to the event information structure
18042
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 @see
18044 @return Result of the function call
18045*/
18046WDI_Status
18047WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018048(
Jeff Johnson295189b2012-06-20 16:38:30 -070018049 WDI_ControlBlockType* pWDICtx,
18050 WDI_EventInfoType* pEventData
18051)
18052{
18053 WDI_Status wdiStatus;
18054 eHalStatus halStatus;
18055 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18057
18058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018060 -------------------------------------------------------------------------*/
18061 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18062 ( NULL == pEventData->pEventData))
18063 {
18064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018065 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018068 }
18069
18070 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18071
18072 /*-------------------------------------------------------------------------
18073 Extract response and send it to UMAC
18074 -------------------------------------------------------------------------*/
18075 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018076 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018077
18078 /*Notify UMAC*/
18079 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18080
Jeff Johnsone7245742012-09-05 17:12:55 -070018081 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018082}/*WDI_ProcessUpdateUapsdParamsRsp*/
18083
18084/**
18085 @brief Process Configure RXP filter Rsp function (called when a
18086 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018087
18088 @param pWDICtx: pointer to the WLAN DAL context
18089 pEventData: pointer to the event information structure
18090
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 @see
18092 @return Result of the function call
18093*/
18094WDI_Status
18095WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018096(
Jeff Johnson295189b2012-06-20 16:38:30 -070018097 WDI_ControlBlockType* pWDICtx,
18098 WDI_EventInfoType* pEventData
18099)
18100{
18101 WDI_Status wdiStatus;
18102 eHalStatus halStatus;
18103 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18105
18106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018108 -------------------------------------------------------------------------*/
18109 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18110 ( NULL == pEventData->pEventData))
18111 {
18112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018116 }
18117
18118 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18119
18120 /*-------------------------------------------------------------------------
18121 Extract response and send it to UMAC
18122 -------------------------------------------------------------------------*/
18123 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018124 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018125
18126 /*Notify UMAC*/
18127 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18128
Jeff Johnsone7245742012-09-05 17:12:55 -070018129 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018130}/*WDI_ProcessConfigureRxpFilterRsp*/
18131
18132/**
18133 @brief Process Set beacon filter Rsp function (called when a
18134 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018135
18136 @param pWDICtx: pointer to the WLAN DAL context
18137 pEventData: pointer to the event information structure
18138
Jeff Johnson295189b2012-06-20 16:38:30 -070018139 @see
18140 @return Result of the function call
18141*/
18142WDI_Status
18143WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018144(
Jeff Johnson295189b2012-06-20 16:38:30 -070018145 WDI_ControlBlockType* pWDICtx,
18146 WDI_EventInfoType* pEventData
18147)
18148{
18149 WDI_Status wdiStatus;
18150 eHalStatus halStatus;
18151 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18153
18154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018156 -------------------------------------------------------------------------*/
18157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18158 ( NULL == pEventData->pEventData))
18159 {
18160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 }
18165
18166 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18167
18168 /*-------------------------------------------------------------------------
18169 Extract response and send it to UMAC
18170 -------------------------------------------------------------------------*/
18171 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018172 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018173
18174 /*Notify UMAC*/
18175 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18176
Jeff Johnsone7245742012-09-05 17:12:55 -070018177 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018178}/*WDI_ProcessSetBeaconFilterRsp*/
18179
18180/**
18181 @brief Process remove beacon filter Rsp function (called when a
18182 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018183
18184 @param pWDICtx: pointer to the WLAN DAL context
18185 pEventData: pointer to the event information structure
18186
Jeff Johnson295189b2012-06-20 16:38:30 -070018187 @see
18188 @return Result of the function call
18189*/
18190WDI_Status
18191WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018192(
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 WDI_ControlBlockType* pWDICtx,
18194 WDI_EventInfoType* pEventData
18195)
18196{
18197 WDI_Status wdiStatus;
18198 eHalStatus halStatus;
18199 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18201
18202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018203 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 -------------------------------------------------------------------------*/
18205 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18206 ( NULL == pEventData->pEventData))
18207 {
18208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018209 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018212 }
18213
18214 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18215
18216 /*-------------------------------------------------------------------------
18217 Extract response and send it to UMAC
18218 -------------------------------------------------------------------------*/
18219 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018220 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018221
18222 /*Notify UMAC*/
18223 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18224
Jeff Johnsone7245742012-09-05 17:12:55 -070018225 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018226}/*WDI_ProcessRemBeaconFilterRsp*/
18227
18228/**
18229 @brief Process set RSSI thresholds Rsp function (called when a
18230 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018231
18232 @param pWDICtx: pointer to the WLAN DAL context
18233 pEventData: pointer to the event information structure
18234
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 @see
18236 @return Result of the function call
18237*/
18238WDI_Status
18239WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018240(
Jeff Johnson295189b2012-06-20 16:38:30 -070018241 WDI_ControlBlockType* pWDICtx,
18242 WDI_EventInfoType* pEventData
18243)
18244{
18245 WDI_Status wdiStatus;
18246 eHalStatus halStatus;
18247 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18249
18250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018252 -------------------------------------------------------------------------*/
18253 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18254 ( NULL == pEventData->pEventData))
18255 {
18256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018260 }
18261
18262 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18263
18264 /*-------------------------------------------------------------------------
18265 Extract response and send it to UMAC
18266 -------------------------------------------------------------------------*/
18267 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018268 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018269
18270 /*Notify UMAC*/
18271 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18272
Jeff Johnsone7245742012-09-05 17:12:55 -070018273 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018274}/*WDI_ProcessSetRSSIThresoldsRsp*/
18275
18276/**
18277 @brief Process host offload Rsp function (called when a
18278 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018279
18280 @param pWDICtx: pointer to the WLAN DAL context
18281 pEventData: pointer to the event information structure
18282
Jeff Johnson295189b2012-06-20 16:38:30 -070018283 @see
18284 @return Result of the function call
18285*/
18286WDI_Status
18287WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018288(
Jeff Johnson295189b2012-06-20 16:38:30 -070018289 WDI_ControlBlockType* pWDICtx,
18290 WDI_EventInfoType* pEventData
18291)
18292{
18293 WDI_Status wdiStatus;
18294 eHalStatus halStatus;
18295 WDI_HostOffloadCb wdiHostOffloadCb;
18296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18297
18298 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018299 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018300 -------------------------------------------------------------------------*/
18301 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18302 ( NULL == pEventData->pEventData))
18303 {
18304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018308 }
18309
18310 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18311
18312 /*-------------------------------------------------------------------------
18313 Extract response and send it to UMAC
18314 -------------------------------------------------------------------------*/
18315 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018316 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018317
18318 /*Notify UMAC*/
18319 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18320
Jeff Johnsone7245742012-09-05 17:12:55 -070018321 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018322}/*WDI_ProcessHostOffloadRsp*/
18323
18324/**
18325 @brief Process keep alive Rsp function (called when a
18326 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018327
18328 @param pWDICtx: pointer to the WLAN DAL context
18329 pEventData: pointer to the event information structure
18330
Jeff Johnson295189b2012-06-20 16:38:30 -070018331 @see
18332 @return Result of the function call
18333*/
18334WDI_Status
18335WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018336(
Jeff Johnson295189b2012-06-20 16:38:30 -070018337 WDI_ControlBlockType* pWDICtx,
18338 WDI_EventInfoType* pEventData
18339)
18340{
18341 WDI_Status wdiStatus;
18342 eHalStatus halStatus;
18343 WDI_KeepAliveCb wdiKeepAliveCb;
18344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18346 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18347
18348
18349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018351 -------------------------------------------------------------------------*/
18352 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18353 ( NULL == pEventData->pEventData))
18354 {
18355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018359 }
18360
Jeff Johnsone7245742012-09-05 17:12:55 -070018361 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18362
Jeff Johnson295189b2012-06-20 16:38:30 -070018363 /*-------------------------------------------------------------------------
18364 Extract response and send it to UMAC
18365 -------------------------------------------------------------------------*/
18366 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018367 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018368
18369 /*Notify UMAC*/
18370 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18371
Jeff Johnsone7245742012-09-05 17:12:55 -070018372 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018373}/*WDI_ProcessKeepAliveRsp*/
18374
18375/**
18376 @brief Process wowl add ptrn Rsp function (called when a
18377 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018378
18379 @param pWDICtx: pointer to the WLAN DAL context
18380 pEventData: pointer to the event information structure
18381
Jeff Johnson295189b2012-06-20 16:38:30 -070018382 @see
18383 @return Result of the function call
18384*/
18385WDI_Status
18386WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018387(
Jeff Johnson295189b2012-06-20 16:38:30 -070018388 WDI_ControlBlockType* pWDICtx,
18389 WDI_EventInfoType* pEventData
18390)
18391{
Jeff Johnson295189b2012-06-20 16:38:30 -070018392 eHalStatus halStatus;
18393 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018394 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18395 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18396
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18398
18399 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018400 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018401 -------------------------------------------------------------------------*/
18402 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18403 ( NULL == pEventData->pEventData))
18404 {
18405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018406 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018409 }
18410
18411 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18412
18413 /*-------------------------------------------------------------------------
18414 Extract response and send it to UMAC
18415 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018416 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18417 {
18418 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18419 pEventData->pEventData,
18420 sizeof(halAddWowlBcastPtrRsp));
18421
18422 wdiWowlAddBcPtrRsp.wdiStatus =
18423 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18424 }
18425 else
18426 {
18427 halStatus = *((eHalStatus*)pEventData->pEventData);
18428 wdiWowlAddBcPtrRsp.wdiStatus =
18429 WDI_HAL_2_WDI_STATUS(halStatus);
18430 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018431
18432 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018433 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018434
Jeff Johnsone7245742012-09-05 17:12:55 -070018435 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018436}/*WDI_ProcessWowlAddBcPtrnRsp*/
18437
18438/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018439 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018441
18442 @param pWDICtx: pointer to the WLAN DAL context
18443 pEventData: pointer to the event information structure
18444
Jeff Johnson295189b2012-06-20 16:38:30 -070018445 @see
18446 @return Result of the function call
18447*/
18448WDI_Status
18449WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018450(
Jeff Johnson295189b2012-06-20 16:38:30 -070018451 WDI_ControlBlockType* pWDICtx,
18452 WDI_EventInfoType* pEventData
18453)
18454{
Jeff Johnson295189b2012-06-20 16:38:30 -070018455 eHalStatus halStatus;
18456 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018457 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18458 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18460
18461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018463 -------------------------------------------------------------------------*/
18464 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18465 ( NULL == pEventData->pEventData))
18466 {
18467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018468 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018469 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018471 }
18472
18473 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18474
18475 /*-------------------------------------------------------------------------
18476 Extract response and send it to UMAC
18477 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018478 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18479 {
18480 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18481 pEventData->pEventData,
18482 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018483
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018484 wdiWowlDelBcstPtrRsp.wdiStatus =
18485 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18486 }
18487 else
18488 {
18489 halStatus = *((eHalStatus*)pEventData->pEventData);
18490 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18491 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018493 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018494
Jeff Johnsone7245742012-09-05 17:12:55 -070018495 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018496}/*WDI_ProcessWowlDelBcPtrnRsp*/
18497
18498/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018499 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018500 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018501
18502 @param pWDICtx: pointer to the WLAN DAL context
18503 pEventData: pointer to the event information structure
18504
Jeff Johnson295189b2012-06-20 16:38:30 -070018505 @see
18506 @return Result of the function call
18507*/
18508WDI_Status
18509WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018510(
Jeff Johnson295189b2012-06-20 16:38:30 -070018511 WDI_ControlBlockType* pWDICtx,
18512 WDI_EventInfoType* pEventData
18513)
18514{
Jeff Johnson295189b2012-06-20 16:38:30 -070018515 eHalStatus halStatus;
18516 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018517 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18518 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18520
18521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018522 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018523 -------------------------------------------------------------------------*/
18524 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18525 ( NULL == pEventData->pEventData))
18526 {
18527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018528 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018531 }
18532
18533 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18534
18535 /*-------------------------------------------------------------------------
18536 Extract response and send it to UMAC
18537 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018538 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18539 {
18540 wpalMemoryCopy( &halEnterWowlRspParams,
18541 (wpt_uint8*)pEventData->pEventData,
18542 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018543
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018544 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18545 wdiwowlEnterRsp.status =
18546 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18547 }
18548 else
18549 {
18550 halStatus = *((eHalStatus*)pEventData->pEventData);
18551 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18552 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018553 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018554 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018555
Jeff Johnsone7245742012-09-05 17:12:55 -070018556 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018557}/*WDI_ProcessWowlEnterRsp*/
18558
18559/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018560 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018561 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018562
18563 @param pWDICtx: pointer to the WLAN DAL context
18564 pEventData: pointer to the event information structure
18565
Jeff Johnson295189b2012-06-20 16:38:30 -070018566 @see
18567 @return Result of the function call
18568*/
18569WDI_Status
18570WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018571(
Jeff Johnson295189b2012-06-20 16:38:30 -070018572 WDI_ControlBlockType* pWDICtx,
18573 WDI_EventInfoType* pEventData
18574)
18575{
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 eHalStatus halStatus;
18577 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018578 tHalExitWowlRspParams halExitWowlRspParams;
18579 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18580
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18582
18583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018585 -------------------------------------------------------------------------*/
18586 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18587 ( NULL == pEventData->pEventData))
18588 {
18589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018590 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018593 }
18594
18595 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18596
18597 /*-------------------------------------------------------------------------
18598 Extract response and send it to UMAC
18599 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018600 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18601 {
18602 wpalMemoryCopy( &halExitWowlRspParams,
18603 pEventData->pEventData,
18604 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018605
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018606 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18607 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18608
18609 }
18610 else
18611 {
18612 halStatus = *((eHalStatus*)pEventData->pEventData);
18613 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18614 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018615 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018616 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018617
Jeff Johnsone7245742012-09-05 17:12:55 -070018618 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018619}/*WDI_ProcessWowlExitRsp*/
18620
18621/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018622 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018623 (called when a response is being received over the bus
18624 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018625
18626 @param pWDICtx: pointer to the WLAN DAL context
18627 pEventData: pointer to the event information structure
18628
Jeff Johnson295189b2012-06-20 16:38:30 -070018629 @see
18630 @return Result of the function call
18631*/
18632WDI_Status
18633WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018634(
Jeff Johnson295189b2012-06-20 16:38:30 -070018635 WDI_ControlBlockType* pWDICtx,
18636 WDI_EventInfoType* pEventData
18637)
18638{
18639 WDI_Status wdiStatus;
18640 eHalStatus halStatus;
18641 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18643
18644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018645 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018646 -------------------------------------------------------------------------*/
18647 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18648 ( NULL == pEventData->pEventData))
18649 {
18650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018654 }
18655
18656 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18657
18658 /*-------------------------------------------------------------------------
18659 Extract response and send it to UMAC
18660 -------------------------------------------------------------------------*/
18661 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018662 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018663
18664 /*Notify UMAC*/
18665 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18666
Jeff Johnsone7245742012-09-05 17:12:55 -070018667 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018668}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18669
18670
18671/**
18672 @brief Process Nv download(called when a response
18673 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018674
18675 @param pWDICtx: pointer to the WLAN DAL context
18676 pEventData: pointer to the event information structure
18677
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 @see
18679 @return Result of the function call
18680*/
18681WDI_Status
18682WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018683(
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 WDI_ControlBlockType* pWDICtx,
18685 WDI_EventInfoType* pEventData
18686)
18687{
18688
18689 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18690 tHalNvImgDownloadRspParams halNvDownloadRsp;
18691 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18692
18693 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018694 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 -------------------------------------------------------------------------*/
18696 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18697 ( NULL == pEventData->pEventData))
18698 {
18699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018700 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018703 }
18704
18705 /*-------------------------------------------------------------------------
18706 Extract response and send it to UMAC
18707 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018708 wpalMemoryCopy( &halNvDownloadRsp,
18709 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018710 sizeof(halNvDownloadRsp));
18711
18712 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18713
18714 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018715 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18716 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018717 {
18718 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018719 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018720 }
18721 else
18722 {
18723 /*Reset the Nv related global information in WDI context information */
18724 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18725 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18726 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18727 /*call WDA callback function for last fragment */
18728 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18729 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18730 }
18731
Jeff Johnsone7245742012-09-05 17:12:55 -070018732 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018733}
18734#ifdef WLAN_FEATURE_VOWIFI_11R
18735/**
18736 @brief Process Add TSpec Rsp function (called when a response
18737 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018738
18739 @param pWDICtx: pointer to the WLAN DAL context
18740 pEventData: pointer to the event information structure
18741
Jeff Johnson295189b2012-06-20 16:38:30 -070018742 @see
18743 @return Result of the function call
18744*/
18745WDI_Status
18746WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018747(
Jeff Johnson295189b2012-06-20 16:38:30 -070018748 WDI_ControlBlockType* pWDICtx,
18749 WDI_EventInfoType* pEventData
18750)
18751{
18752 WDI_Status wdiStatus;
18753 tAggrAddTsRspParams aggrAddTsRsp;
18754 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18756
18757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018758 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018759 -------------------------------------------------------------------------*/
18760 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18761 ( NULL == pEventData->pEventData))
18762 {
18763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018764 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018767 }
18768
18769 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18770
18771 /*-------------------------------------------------------------------------
18772 Extract response and send it to UMAC
18773 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018774 wpalMemoryCopy( &aggrAddTsRsp,
18775 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018776 sizeof(aggrAddTsRsp));
18777
18778 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018779 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018780
18781 /*Notify UMAC*/
18782 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18783
Jeff Johnsone7245742012-09-05 17:12:55 -070018784 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018785}/*WDI_ProcessAddTSpecRsp*/
18786#endif /* WLAN_FEATURE_VOWIFI_11R */
18787
18788/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018789 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018790 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018791
18792 @param pWDICtx: pointer to the WLAN DAL context
18793 pEventData: pointer to the event information structure
18794
Jeff Johnson295189b2012-06-20 16:38:30 -070018795 @see
18796 @return Result of the function call
18797*/
18798WDI_Status
18799WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018800(
Jeff Johnson295189b2012-06-20 16:38:30 -070018801 WDI_ControlBlockType* pWDICtx,
18802 WDI_EventInfoType* pEventData
18803)
18804{
18805 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18806 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18807 tHalHostResumeRspParams hostResumeRspMsg;
18808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18809
18810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018812 -------------------------------------------------------------------------*/
18813 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18814 ( NULL == pEventData->pEventData))
18815 {
18816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018820 }
18821
18822 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18823
18824 /*-------------------------------------------------------------------------
18825 Extract response and send it to UMAC
18826 -------------------------------------------------------------------------*/
18827
Jeff Johnsone7245742012-09-05 17:12:55 -070018828 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018829 (wpt_uint8*)pEventData->pEventData,
18830 sizeof(hostResumeRspMsg));
18831
Jeff Johnsone7245742012-09-05 17:12:55 -070018832 wdiResumeRspParams.wdiStatus =
18833 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018834
18835 /*Notify UMAC*/
18836 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18837
18838 return WDI_STATUS_SUCCESS;
18839}
18840
18841/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018842 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018843 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018844
18845 @param pWDICtx: pointer to the WLAN DAL context
18846 pEventData: pointer to the event information structure
18847
Jeff Johnson295189b2012-06-20 16:38:30 -070018848 @see
18849 @return Result of the function call
18850*/
18851WDI_Status
18852WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018853(
Jeff Johnson295189b2012-06-20 16:38:30 -070018854 WDI_ControlBlockType* pWDICtx,
18855 WDI_EventInfoType* pEventData
18856)
18857{
18858 WDI_Status wdiStatus;
18859 eHalStatus halStatus;
18860 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18862
18863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018865 -------------------------------------------------------------------------*/
18866 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18867 ( NULL == pEventData->pEventData))
18868 {
18869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018873 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018874
18875 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018876
18877 /*-------------------------------------------------------------------------
18878 Extract response and send it to UMAC
18879 -------------------------------------------------------------------------*/
18880 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018881 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018882
18883 /*Notify UMAC*/
18884 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18885
Jeff Johnsone7245742012-09-05 17:12:55 -070018886 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018887}/*WDI_ProcessSetTxPerTrackingRsp*/
18888
18889/*==========================================================================
18890 Indications from HAL
18891 ==========================================================================*/
18892/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018893 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018894 indication of this kind is being received over the bus
18895 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018896
18897 @param pWDICtx: pointer to the WLAN DAL context
18898 pEventData: pointer to the event information structure
18899
Jeff Johnson295189b2012-06-20 16:38:30 -070018900 @see
18901 @return Result of the function call
18902*/
18903WDI_Status
18904WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018905(
Jeff Johnson295189b2012-06-20 16:38:30 -070018906 WDI_ControlBlockType* pWDICtx,
18907 WDI_EventInfoType* pEventData
18908)
18909{
18910 WDI_LowLevelIndType wdiInd;
18911 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18913
18914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018916 -------------------------------------------------------------------------*/
18917 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18918 ( NULL == pEventData->pEventData))
18919 {
18920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018924 }
18925
18926 /*-------------------------------------------------------------------------
18927 Extract indication and send it to UMAC
18928 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018929 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18930 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018931 sizeof(tHalRSSINotification));
18932
18933 /*Fill in the indication parameters*/
18934 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18935 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18936 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18937 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18938 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18939 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18940 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18941 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18942 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18943 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18944 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18945 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18946 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018947 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18948 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018949
ltimariu034f7d62013-01-24 18:54:33 -080018950 if ( pWDICtx->wdiLowLevelIndCB )
18951 {
18952 /*Notify UMAC of indication*/
18953 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18954 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018955
18956 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018957}/*WDI_ProcessLowRSSIInd*/
18958
18959
18960/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018961 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018962 an indication of this kind is being received over the
18963 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018964
18965 @param pWDICtx: pointer to the WLAN DAL context
18966 pEventData: pointer to the event information structure
18967
Jeff Johnson295189b2012-06-20 16:38:30 -070018968 @see
18969 @return Result of the function call
18970*/
18971WDI_Status
18972WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018973(
Jeff Johnson295189b2012-06-20 16:38:30 -070018974 WDI_ControlBlockType* pWDICtx,
18975 WDI_EventInfoType* pEventData
18976)
18977{
18978 WDI_Status wdiStatus;
18979 eHalStatus halStatus;
18980 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018981 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18983
18984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018986 -------------------------------------------------------------------------*/
18987 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18988 ( NULL == pEventData->pEventData))
18989 {
18990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018991 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018994 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018995 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018996 /*-------------------------------------------------------------------------
18997 Extract indication and send it to UMAC
18998 -------------------------------------------------------------------------*/
18999 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19000 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019001 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019002
19003 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019004 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019005 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19006 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019007 if ( pWDICtx->wdiLowLevelIndCB )
19008 {
19009 /*Notify UMAC*/
19010 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19011 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019012
19013 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019014}/*WDI_ProcessMissedBeaconInd*/
19015
19016
19017/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019018 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019019 an indication of this kind is being received over the
19020 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019021
19022 @param pWDICtx: pointer to the WLAN DAL context
19023 pEventData: pointer to the event information structure
19024
Jeff Johnson295189b2012-06-20 16:38:30 -070019025 @see
19026 @return Result of the function call
19027*/
19028WDI_Status
19029WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019030(
Jeff Johnson295189b2012-06-20 16:38:30 -070019031 WDI_ControlBlockType* pWDICtx,
19032 WDI_EventInfoType* pEventData
19033)
19034{
19035 WDI_Status wdiStatus;
19036 eHalStatus halStatus;
19037 WDI_LowLevelIndType wdiInd;
19038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19039
19040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019041 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019042 -------------------------------------------------------------------------*/
19043 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19044 ( NULL == pEventData->pEventData))
19045 {
19046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019047 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019048 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019050 }
19051
19052 /*-------------------------------------------------------------------------
19053 Extract indication and send it to UMAC
19054 -------------------------------------------------------------------------*/
19055 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19056 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019057 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019058
19059 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019060 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 /* ! TO DO - fill in from HAL struct:
19062 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19063
ltimariu034f7d62013-01-24 18:54:33 -080019064 if ( pWDICtx->wdiLowLevelIndCB )
19065 {
19066 /*Notify UMAC*/
19067 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19068 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019069
19070 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019071}/*WDI_ProcessUnkAddrFrameInd*/
19072
19073
19074/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019075 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019076 indication of this kind is being received over the bus
19077 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019078
19079 @param pWDICtx: pointer to the WLAN DAL context
19080 pEventData: pointer to the event information structure
19081
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 @see
19083 @return Result of the function call
19084*/
19085WDI_Status
19086WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019087(
Jeff Johnson295189b2012-06-20 16:38:30 -070019088 WDI_ControlBlockType* pWDICtx,
19089 WDI_EventInfoType* pEventData
19090)
19091{
19092 WDI_LowLevelIndType wdiInd;
19093 tpSirMicFailureInd pHalMicFailureInd;
19094
19095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19096
19097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019098 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019099 -------------------------------------------------------------------------*/
19100 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19101 ( NULL == pEventData->pEventData))
19102 {
19103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019104 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019107 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019108
Jeff Johnson295189b2012-06-20 16:38:30 -070019109 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19110 /*-------------------------------------------------------------------------
19111 Extract indication and send it to UMAC
19112 -------------------------------------------------------------------------*/
19113
19114 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019115 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019116 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19117 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19118 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19119 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19120 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19121 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19122 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19123 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019124 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019125 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019126 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019127 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019128 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019129 pHalMicFailureInd->info.keyId;
19130 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19131 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19132 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19133 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019134
19135 if ( pWDICtx->wdiLowLevelIndCB )
19136 {
19137 /*Notify UMAC*/
19138 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19139 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019140
19141 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019142}/*WDI_ProcessMicFailureInd*/
19143
19144
19145/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019146 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019147 an indication of this kind is being received over the
19148 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019149
19150 @param pWDICtx: pointer to the WLAN DAL context
19151 pEventData: pointer to the event information structure
19152
Jeff Johnson295189b2012-06-20 16:38:30 -070019153 @see
19154 @return Result of the function call
19155*/
19156WDI_Status
19157WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019158(
Jeff Johnson295189b2012-06-20 16:38:30 -070019159 WDI_ControlBlockType* pWDICtx,
19160 WDI_EventInfoType* pEventData
19161)
19162{
19163 WDI_Status wdiStatus;
19164 eHalStatus halStatus;
19165 WDI_LowLevelIndType wdiInd;
19166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19167
19168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019170 -------------------------------------------------------------------------*/
19171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19172 ( NULL == pEventData->pEventData))
19173 {
19174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019178 }
19179
19180 /*-------------------------------------------------------------------------
19181 Extract indication and send it to UMAC
19182 -------------------------------------------------------------------------*/
19183
19184 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19185 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019186 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019187
19188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19189 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019190
Jeff Johnson295189b2012-06-20 16:38:30 -070019191 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019192 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19193 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019194
ltimariu034f7d62013-01-24 18:54:33 -080019195 if ( pWDICtx->wdiLowLevelIndCB )
19196 {
19197 /*Notify UMAC*/
19198 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19199 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019200
19201 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019202}/*WDI_ProcessFatalErrorInd*/
19203
19204/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019205 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019206 an indication of this kind is being received over the
19207 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019208
19209 @param pWDICtx: pointer to the WLAN DAL context
19210 pEventData: pointer to the event information structure
19211
Jeff Johnson295189b2012-06-20 16:38:30 -070019212 @see
19213 @return Result of the function call
19214*/
19215WDI_Status
19216WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019217(
Jeff Johnson295189b2012-06-20 16:38:30 -070019218 WDI_ControlBlockType* pWDICtx,
19219 WDI_EventInfoType* pEventData
19220)
19221{
19222 tDeleteStaContextParams halDelSTACtx;
19223 WDI_LowLevelIndType wdiInd;
19224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19225
19226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019227 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019228 -------------------------------------------------------------------------*/
19229 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19230 ( NULL == pEventData->pEventData))
19231 {
19232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019236 }
19237
19238 /*-------------------------------------------------------------------------
19239 Extract indication and send it to UMAC
19240 -------------------------------------------------------------------------*/
19241
19242 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019243 wpalMemoryCopy( &halDelSTACtx,
19244 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019245 sizeof(halDelSTACtx));
19246
19247 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019248 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019249
19250 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19251 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19252 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19253 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19254
Jeff Johnsone7245742012-09-05 17:12:55 -070019255 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019256 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019257 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019258 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019259 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19260 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019261
ltimariu034f7d62013-01-24 18:54:33 -080019262 if ( pWDICtx->wdiLowLevelIndCB )
19263 {
19264 /*Notify UMAC*/
19265 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19266 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019267
19268 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019269}/*WDI_ProcessDelSTAInd*/
19270
19271/**
19272*@brief Process Coex Indication function (called when
19273 an indication of this kind is being received over the
19274 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019275
19276 @param pWDICtx: pointer to the WLAN DAL context
19277 pEventData: pointer to the event information structure
19278
Jeff Johnson295189b2012-06-20 16:38:30 -070019279 @see
19280 @return Result of the function call
19281*/
19282WDI_Status
19283WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019284(
Jeff Johnson295189b2012-06-20 16:38:30 -070019285 WDI_ControlBlockType* pWDICtx,
19286 WDI_EventInfoType* pEventData
19287)
19288{
19289 WDI_LowLevelIndType wdiInd;
19290 tCoexIndMsg halCoexIndMsg;
19291 wpt_uint32 index;
19292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19293
19294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 -------------------------------------------------------------------------*/
19297 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19298 ( NULL == pEventData->pEventData ))
19299 {
19300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019302 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019304 }
19305
19306 /*-------------------------------------------------------------------------
19307 Extract indication and send it to UMAC
19308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019309 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19310 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019311 sizeof(halCoexIndMsg.coexIndParams) );
19312
19313 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019314 wdiInd.wdiIndicationType = WDI_COEX_IND;
19315 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019316 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19317 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019318 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 }
19320
19321 // DEBUG
19322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19323 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019324 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19325 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19326 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19327 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19328 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019329
ltimariu034f7d62013-01-24 18:54:33 -080019330 if ( pWDICtx->wdiLowLevelIndCB )
19331 {
19332 /*Notify UMAC*/
19333 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19334 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019335
19336 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019337}/*WDI_ProcessCoexInd*/
19338
19339/**
19340*@brief Process Tx Complete Indication function (called when
19341 an indication of this kind is being received over the
19342 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019343
19344 @param pWDICtx: pointer to the WLAN DAL context
19345 pEventData: pointer to the event information structure
19346
Jeff Johnson295189b2012-06-20 16:38:30 -070019347 @see
19348 @return Result of the function call
19349*/
19350WDI_Status
19351WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019352(
Jeff Johnson295189b2012-06-20 16:38:30 -070019353 WDI_ControlBlockType* pWDICtx,
19354 WDI_EventInfoType* pEventData
19355)
19356{
19357 WDI_LowLevelIndType wdiInd;
19358 tTxComplIndMsg halTxComplIndMsg;
19359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19360
19361 /*-------------------------------------------------------------------------
19362 Sanity check
19363 -------------------------------------------------------------------------*/
19364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19365 ( NULL == pEventData->pEventData ))
19366 {
19367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019369 WDI_ASSERT( 0 );
19370 return WDI_STATUS_E_FAILURE;
19371 }
19372
19373 /*-------------------------------------------------------------------------
19374 Extract indication and send it to UMAC
19375 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019376 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19377 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019378 sizeof(halTxComplIndMsg.txComplParams) );
19379
19380 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019381 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19382 wdiInd.wdiIndicationData.tx_complete_status
19383 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019384
ltimariu034f7d62013-01-24 18:54:33 -080019385 if ( pWDICtx->wdiLowLevelIndCB )
19386 {
19387 /*Notify UMAC*/
19388 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19389 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019390
19391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019392}/*WDI_ProcessTxCompleteInd*/
19393
Jeff Johnson295189b2012-06-20 16:38:30 -070019394/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019395*@brief Process Noa Start Indication function (called when
19396 an indication of this kind is being received over the
19397 bus from HAL)
19398
19399 @param pWDICtx: pointer to the WLAN DAL context
19400 pEventData: pointer to the event information structure
19401
19402 @see
19403 @return Result of the function call
19404*/
19405WDI_Status
19406WDI_ProcessP2pNoaStartInd
19407(
19408 WDI_ControlBlockType* pWDICtx,
19409 WDI_EventInfoType* pEventData
19410)
19411{
19412 WDI_LowLevelIndType wdiInd;
19413 tNoaStartIndMsg halNoaStartIndMsg;
19414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19415
19416 /*-------------------------------------------------------------------------
19417 Sanity check
19418 -------------------------------------------------------------------------*/
19419 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19420 ( NULL == pEventData->pEventData ))
19421 {
19422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19423 "%s: Invalid parameters", __func__);
19424 WDI_ASSERT( 0 );
19425 return WDI_STATUS_E_FAILURE;
19426 }
19427
19428 /*-------------------------------------------------------------------------
19429 Extract indication and send it to UMAC
19430 -------------------------------------------------------------------------*/
19431 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19432 pEventData->pEventData,
19433 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19434
19435 /*Fill in the indication parameters*/
19436 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19437
19438 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19439 = halNoaStartIndMsg.noaStartIndParams.status;
19440
19441 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19442 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19443
19444 /*Notify UMAC*/
19445 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19446
19447 return WDI_STATUS_SUCCESS;
19448}/*WDI_ProcessNoaAttrInd*/
19449
19450/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019451*@brief Process Noa Attr Indication function (called when
19452 an indication of this kind is being received over the
19453 bus from HAL)
19454
19455 @param pWDICtx: pointer to the WLAN DAL context
19456 pEventData: pointer to the event information structure
19457
19458 @see
19459 @return Result of the function call
19460*/
19461WDI_Status
19462WDI_ProcessP2pNoaAttrInd
19463(
19464 WDI_ControlBlockType* pWDICtx,
19465 WDI_EventInfoType* pEventData
19466)
19467{
19468 WDI_LowLevelIndType wdiInd;
19469 tNoaAttrIndMsg halNoaAttrIndMsg;
19470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19471
19472 /*-------------------------------------------------------------------------
19473 Sanity check
19474 -------------------------------------------------------------------------*/
19475 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19476 ( NULL == pEventData->pEventData ))
19477 {
19478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019479 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019480 WDI_ASSERT( 0 );
19481 return WDI_STATUS_E_FAILURE;
19482 }
19483
19484 /*-------------------------------------------------------------------------
19485 Extract indication and send it to UMAC
19486 -------------------------------------------------------------------------*/
19487 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19488 pEventData->pEventData,
19489 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19490
19491 /*Fill in the indication parameters*/
19492 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019493
Jeff Johnson295189b2012-06-20 16:38:30 -070019494 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19495 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019496
Jeff Johnson295189b2012-06-20 16:38:30 -070019497 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19498 = halNoaAttrIndMsg.noaAttrIndParams.index;
19499 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19500 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19501 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19502 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019503
Jeff Johnson295189b2012-06-20 16:38:30 -070019504 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19505 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19506 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19507 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19508 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19509 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19510 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19511 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019512
Jeff Johnson295189b2012-06-20 16:38:30 -070019513 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19514 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19515 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19516 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19517 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19518 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19519 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19520 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19521
ltimariu034f7d62013-01-24 18:54:33 -080019522 if ( pWDICtx->wdiLowLevelIndCB )
19523 {
19524 /*Notify UMAC*/
19525 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19526 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019527
19528 return WDI_STATUS_SUCCESS;
19529}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019530
19531/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019532 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019533 an indication of this kind is being received over the
19534 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019535
19536 @param pWDICtx: pointer to the WLAN DAL context
19537 pEventData: pointer to the event information structure
19538
Jeff Johnson295189b2012-06-20 16:38:30 -070019539 @see
19540 @return Result of the function call
19541*/
19542WDI_Status
19543WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019544(
Jeff Johnson295189b2012-06-20 16:38:30 -070019545 WDI_ControlBlockType* pWDICtx,
19546 WDI_EventInfoType* pEventData
19547)
19548{
19549 WDI_LowLevelIndType wdiInd;
19550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019551
Jeff Johnson295189b2012-06-20 16:38:30 -070019552 /*-------------------------------------------------------------------------
19553 Extract indication and send it to UMAC
19554 -------------------------------------------------------------------------*/
19555 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019556 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19557
ltimariu034f7d62013-01-24 18:54:33 -080019558 if ( pWDICtx->wdiLowLevelIndCB )
19559 {
19560 /*Notify UMAC*/
19561 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19562 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019563
Jeff Johnsone7245742012-09-05 17:12:55 -070019564 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019565}/*WDI_ProcessTxPerHitInd*/
19566
Jeff Johnson295189b2012-06-20 16:38:30 -070019567/**
19568 @brief WDI_ProcessFTMCommandReq
19569 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019570
19571 @param pWDICtx: pointer to the WLAN DAL context
19572 pEventData: pointer to the event information structure
19573
Jeff Johnson295189b2012-06-20 16:38:30 -070019574 @see
19575 @return Result of the function call
19576*/
19577WDI_Status
19578WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019579(
Jeff Johnson295189b2012-06-20 16:38:30 -070019580 WDI_ControlBlockType* pWDICtx,
19581 WDI_EventInfoType* pEventData
19582)
19583{
19584 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19585 wpt_uint8 *ftmCommandBuffer = NULL;
19586 wpt_uint16 dataOffset;
19587 wpt_uint16 bufferSize;
19588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019590 -------------------------------------------------------------------------*/
19591 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19592 ( NULL == pEventData->pEventData))
19593
19594 {
19595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019596 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019599 }
19600
19601 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19602
19603 /* Get MSG Buffer */
19604 WDI_GetMessageBuffer(pWDICtx,
19605 WDI_FTM_CMD_REQ,
19606 ftmCommandReq->bodyLength,
19607 &ftmCommandBuffer,
19608 &dataOffset,
19609 &bufferSize);
19610
19611 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19612 ftmCommandReq->FTMCommandBody,
19613 ftmCommandReq->bodyLength);
19614
19615 /* Send MSG */
19616 return WDI_SendMsg(pWDICtx,
19617 ftmCommandBuffer,
19618 bufferSize,
19619 pEventData->pCBfnc,
19620 pEventData->pUserData,
19621 WDI_FTM_CMD_RESP);
19622}
19623
19624/**
19625 @brief WDI_ProcessFTMCommandRsp
19626 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019627
19628 @param pWDICtx: pointer to the WLAN DAL context
19629 pEventData: pointer to the event information structure
19630
Jeff Johnson295189b2012-06-20 16:38:30 -070019631 @see
19632 @return Result of the function call
19633*/
19634WDI_Status
19635WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019636(
Jeff Johnson295189b2012-06-20 16:38:30 -070019637 WDI_ControlBlockType* pWDICtx,
19638 WDI_EventInfoType* pEventData
19639)
19640{
19641 WDI_FTMCommandRspCb ftmCMDRspCb;
19642 tProcessPttRspParams *ftmCMDRspData = NULL;
19643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19644
19645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019647 -------------------------------------------------------------------------*/
19648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19649 ( NULL == pEventData->pEventData))
19650 {
19651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 }
19656
19657 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19658
19659 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19660
Jeff Johnsone7245742012-09-05 17:12:55 -070019661 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19662 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19664
19665 /*Notify UMAC*/
19666 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19667
Jeff Johnsone7245742012-09-05 17:12:55 -070019668 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019669}
Jeff Johnson295189b2012-06-20 16:38:30 -070019670/**
19671 @brief WDI_ProcessHalDumpCmdReq
19672 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019673
19674 @param pWDICtx: pointer to the WLAN DAL context
19675 pEventData: pointer to the event information structure
19676
Jeff Johnson295189b2012-06-20 16:38:30 -070019677 @see
19678 @return Result of the function call
19679*/
19680WDI_Status
19681WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019682(
Jeff Johnson295189b2012-06-20 16:38:30 -070019683 WDI_ControlBlockType* pWDICtx,
19684 WDI_EventInfoType* pEventData
19685)
19686{
19687 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19688 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19689 wpt_uint16 usDataOffset = 0;
19690 wpt_uint16 usSendSize = 0;
19691 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019692 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019693
19694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019696 -------------------------------------------------------------------------*/
19697 if (( NULL == pEventData ) ||
19698 ( NULL == pEventData->pEventData) ||
19699 ( NULL == pEventData->pCBfnc ))
19700 {
19701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019705 }
19706
19707 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
19708 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
19709
19710 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019711 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019712 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070019713 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019714 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019715 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019716 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070019717 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019718 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070019719 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070019721
Jeff Johnson295189b2012-06-20 16:38:30 -070019722 /*-----------------------------------------------------------------------
19723 Get message buffer
19724 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070019726 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
19727 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070019728 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070019729 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
19730 {
19731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19732 "Unable to get send buffer in HAL Dump Command req %x %x %x",
19733 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
19734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019736 }
19737
Jeff Johnsone7245742012-09-05 17:12:55 -070019738 wpalMemoryCopy( pSendBuffer+usDataOffset,
19739 &halDumpCmdReqMsg.dumpCmdReqParams,
19740 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019741
19742 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070019743 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019744
19745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019746 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019747 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019748 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
19749 wdiHALDumpCmdRspCb, pEventData->pUserData,
19750 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070019751}
19752
19753/**
19754 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019755 Process hal Dump Command Response from HAL, simply route to HDD
19756
19757 @param pWDICtx: pointer to the WLAN DAL context
19758 pEventData: pointer to the event information structure
19759
Jeff Johnson295189b2012-06-20 16:38:30 -070019760 @see
19761 @return Result of the function call
19762*/
19763WDI_Status
19764WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019765(
Jeff Johnson295189b2012-06-20 16:38:30 -070019766 WDI_ControlBlockType* pWDICtx,
19767 WDI_EventInfoType* pEventData
19768)
19769{
19770 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019771 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019772 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19773
19774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019775 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019776 -------------------------------------------------------------------------*/
19777 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19778 ( NULL == pEventData->pEventData))
19779 {
19780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019784 }
19785
Jeff Johnsone7245742012-09-05 17:12:55 -070019786 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019787
19788 /*Initialize the WDI Response structure */
19789 wdiHALDumpCmdRsp.usBufferLen = 0;
19790 wdiHALDumpCmdRsp.pBuffer = NULL;
19791
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019792 wpalMemoryCopy( &halDumpCmdRspParams,
19793 pEventData->pEventData,
19794 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070019795
19796 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019797 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019798
19799 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019800 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070019801 {
19802 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019803 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
19804 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
19805
19806 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
19807 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053019808 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070019809 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019810
Jeff Johnson295189b2012-06-20 16:38:30 -070019811 /*Notify UMAC*/
19812 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19813
19814 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19815 {
19816 /* Free the allocated buffer */
19817 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19818 }
19819 return WDI_STATUS_SUCCESS;
19820}
19821
19822/*==========================================================================
19823 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019824
Jeff Johnson295189b2012-06-20 16:38:30 -070019825 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019826 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019827==========================================================================*/
19828/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019829 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019830 when it wishes to send up a notification like the ones
19831 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019832
Jeff Johnson295189b2012-06-20 16:38:30 -070019833 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019834
19835 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019836 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019837 wctsNotifyCBData: the callback data of the user
19838
Jeff Johnson295189b2012-06-20 16:38:30 -070019839 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019840
19841 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019842*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019843void
Jeff Johnson295189b2012-06-20 16:38:30 -070019844WDI_NotifyMsgCTSCB
19845(
Jeff Johnsone7245742012-09-05 17:12:55 -070019846 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019847 WCTS_NotifyEventType wctsEvent,
19848 void* wctsNotifyCBData
19849)
19850{
Jeff Johnsone7245742012-09-05 17:12:55 -070019851 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19853
19854 if (NULL == pWDICtx )
19855 {
19856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019857 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019858 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019859 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019860 }
19861
19862 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19863 {
19864 /* callback presumably occurred after close */
19865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019866 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019867 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019868 }
19869
19870 if ( WCTS_EVENT_OPEN == wctsEvent )
19871 {
19872 /*Flag must be set atomically as it is checked from incoming request
19873 functions*/
19874 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019875 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019876
19877 /*Nothing to do - so try to dequeue any pending request that may have
19878 occurred while we were trying to establish this*/
19879 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019880 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019881 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019882 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019883 {
19884 /*Flag must be set atomically as it is checked from incoming request
19885 functions*/
19886 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019887 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019888
19889 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019890 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019891 wpalMutexRelease(&pWDICtx->wptMutex);
19892
19893 /*Notify that the Control Channel is closed */
19894 wpalEventSet(&pWDICtx->wctsActionEvent);
19895 }
19896
19897}/*WDI_NotifyMsgCTSCB*/
19898
19899
19900/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019901 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019902 when it wishes to send up a packet received over the
19903 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019904
Jeff Johnson295189b2012-06-20 16:38:30 -070019905 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019906
19907 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019908 pMsg: the packet
19909 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019910 wctsRxMsgCBData: the callback data of the user
19911
Jeff Johnson295189b2012-06-20 16:38:30 -070019912 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019913
19914 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019915*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019916void
19917WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019918(
Jeff Johnsone7245742012-09-05 17:12:55 -070019919 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019920 void* pMsg,
19921 wpt_uint32 uLen,
19922 void* wctsRxMsgCBData
19923)
19924{
Jeff Johnsone7245742012-09-05 17:12:55 -070019925 tHalMsgHeader *pHalMsgHeader;
19926 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019927 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19929
19930 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019933 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019934 ( uLen < sizeof(tHalMsgHeader)))
19935 {
19936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019939 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019940 }
19941
19942 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19943 {
19944 /* callback presumably occurred after close */
19945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019946 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019947 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019948 }
19949
Jeff Johnsone7245742012-09-05 17:12:55 -070019950 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019951 context - so no serialization is necessary here
19952 ! - revisit this assumption */
19953
19954 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19955
19956 if ( uLen != pHalMsgHeader->msgLen )
19957 {
19958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19959 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019960 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19961 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019962 }
19963
19964 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19965
19966 /*The message itself starts after the header*/
19967 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19968 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19969 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19970 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19971
19972
19973 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19974 {
19975 /*Stop the timer as the response was received */
19976 /*!UT - check for potential race conditions between stop and response */
19977 wpalTimerStop(&pWDICtx->wptResponseTimer);
19978 }
19979 /* Check if we receive a response message which is not expected */
19980 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19981 {
19982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19983 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19984 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019985 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019986 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19987 pWDICtx->wdiExpectedResponse);
19988 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19989 return;
19990 }
19991
19992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19993 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19994
19995 /*Post response event to the state machine*/
19996 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19997
19998}/*WDI_RXMsgCTSCB*/
19999
20000
20001/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020002 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020003========================================================================*/
20004
20005/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020006 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020007 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020008
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 @param pWDICtx - pointer to the control block
20010
20011 @return Result of the function call
20012*/
20013WPT_INLINE WDI_Status
20014WDI_CleanCB
20015(
20016 WDI_ControlBlockType* pWDICtx
20017)
20018{
20019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20020
20021 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020022 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020023
Jeff Johnsone7245742012-09-05 17:12:55 -070020024 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020025 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20026 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20027
20028 WDI_ResetAssocSessions( pWDICtx );
20029
20030 return WDI_STATUS_SUCCESS;
20031}/*WDI_CleanCB*/
20032
20033
20034/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020035 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020036
Jeff Johnsone7245742012-09-05 17:12:55 -070020037
20038 @param pWDICtx: pointer to the WLAN DAL context
20039 pEventData: pointer to the event information structure
20040
Jeff Johnson295189b2012-06-20 16:38:30 -070020041 @see
20042 @return Result of the function call
20043*/
20044WPT_INLINE WDI_Status
20045WDI_ProcessRequest
20046(
20047 WDI_ControlBlockType* pWDICtx,
20048 WDI_EventInfoType* pEventData
20049)
20050{
20051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20052
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020054 already checked these pointers*/
20055
20056 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20057 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020058 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20060 "Calling request processing function for req %s (%d) %x",
20061 WDI_getReqMsgString(pEventData->wdiRequest),
20062 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20063 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20064 }
20065 else
20066 {
20067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020068 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020069 pEventData->wdiRequest);
20070 return WDI_STATUS_E_NOT_IMPLEMENT;
20071 }
20072}/*WDI_ProcessRequest*/
20073
20074
20075/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020076 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020078 prefixes it with a send message header
20079
20080 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020081 wdiReqType: type of the request being sent
20082 uBufferLen: message buffer len
20083 pMsgBuffer: resulting allocated buffer
20084 pusDataOffset: offset in the buffer where the caller
20085 can start copying its message data
20086 puBufferSize: the resulting buffer size (offset+buff
20087 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020088
Jeff Johnson295189b2012-06-20 16:38:30 -070020089 @see
20090 @return Result of the function call
20091*/
20092WDI_Status
20093WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020094(
20095 WDI_ControlBlockType* pWDICtx,
20096 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020097 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020098 wpt_uint8** pMsgBuffer,
20099 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020100 wpt_uint16* pusBufferSize
20101)
20102{
20103 tHalMsgHeader halMsgHeader;
20104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20105
Jeff Johnsone7245742012-09-05 17:12:55 -070020106 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020107 again*/
20108
20109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020110 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020111 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020112 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020113 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20114 if ( NULL == *pMsgBuffer )
20115 {
20116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20117 "Unable to allocate message buffer for req %s (%d)",
20118 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020119 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020121 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020122 }
20123
20124 /*-------------------------------------------------------------------------
20125 Fill in the message header
20126 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20128 /* Fill msgVersion */
20129#ifdef WLAN_FEATURE_11AC
20130 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020131 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020132 else
20133#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020134 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020135
Jeff Johnsone7245742012-09-05 17:12:55 -070020136 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20137 *pusDataOffset = sizeof(halMsgHeader);
20138 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20139
20140 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020141}/*WDI_GetMessageBuffer*/
20142
20143
20144/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020145 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020146 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020147 the CB
20148
20149 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020150 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020151
Jeff Johnson295189b2012-06-20 16:38:30 -070020152 usSendSize size of the buffer to be sent
20153 pRspCb: response callback - save in the WDI
20154 CB
20155 pUserData: user data associated with the
20156 callback
20157 wdiExpectedResponse: the code of the response that is
20158 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020159
Jeff Johnson295189b2012-06-20 16:38:30 -070020160 @see
20161 @return Result of the function call
20162*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020163WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020164WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020165(
20166 WDI_ControlBlockType* pWDICtx,
20167 wpt_uint8* pSendBuffer,
20168 wpt_uint32 usSendSize,
20169 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020170 void* pUserData,
20171 WDI_ResponseEnumType wdiExpectedResponse
20172)
20173{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020174 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020175 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20177
20178 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020179 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020180 ------------------------------------------------------------------------*/
20181 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 pWDICtx->pfncRspCB = pRspCb;
20183 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020184
20185 /*-----------------------------------------------------------------------
20186 Call the CTS to send this message over - free message afterwards
20187 - notify transport failure
20188 Note: CTS is reponsible for freeing the message buffer.
20189 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020190 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20191 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20192 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020193 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020195 "Failed to send message over the bus - catastrophic failure");
20196
Jeff Johnsond13512a2012-07-17 11:42:19 -070020197 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020198 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020199 else
20200 {
20201 /* even when message was placed in CTS deferred Q, we will treat it
20202 success but log this info
20203 */
20204 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20205 {
20206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20207 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20208 "response %s (%d)",
20209 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20210 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020211 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020212 }
20213 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020214
Jeff Johnsond13512a2012-07-17 11:42:19 -070020215 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020216 if ( NULL != pWDICtx->wdiReqStatusCB )
20217 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020218 /*Inform originator whether request went through or not*/
20219 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20220 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020221 pWDICtx->wdiReqStatusCB = NULL;
20222 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020223 callback(wdiStatus, callbackContext);
20224
20225 /*For WDI requests which have registered a request callback,
20226 inform the WDA caller of the same via setting the return value
20227 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20228 end up repeating the functonality in the req callback for the
20229 WDI_STATUS_E_FAILURE case*/
20230 if (wdiStatus == WDI_STATUS_E_FAILURE)
20231 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 }
20233
Jeff Johnsond13512a2012-07-17 11:42:19 -070020234 if ( wdiStatus == WDI_STATUS_SUCCESS )
20235 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 /*Start timer for the expected response */
20237 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020238
20239 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020240 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020241 }
20242 else
20243 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020244 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020245 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20246 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020247
Jeff Johnsond13512a2012-07-17 11:42:19 -070020248 return wdiStatus;
20249
Jeff Johnson295189b2012-06-20 16:38:30 -070020250}/*WDI_SendMsg*/
20251
20252
20253
20254/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020255 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 the bus using the control transport and saves some info
20257 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020258
20259 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020260 pSendBuffer: buffer to be sent
20261 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020262
Jeff Johnson295189b2012-06-20 16:38:30 -070020263 @see
20264 @return Result of the function call
20265*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020266WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020267WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020268(
20269 WDI_ControlBlockType* pWDICtx,
20270 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020271 wpt_uint32 usSendSize
20272)
20273{
20274 wpt_uint32 uStatus ;
20275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20276
20277 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020278 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020279 Note: CTS is reponsible for freeing the message buffer.
20280 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020281 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020282 (void*)pSendBuffer, usSendSize );
20283
20284 /*Inform Upper MAC about the outcome of the request*/
20285 if ( NULL != pWDICtx->wdiReqStatusCB )
20286 {
20287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20288 "Send indication status : %d", uStatus);
20289
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020290 /* even if CTS placed indication into its deferred Q, we treat it
20291 * as success and let CTS drain its queue as per smd interrupt to CTS
20292 */
20293 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 -070020294 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020295 }
20296
20297 /*If sending of the message failed - it is considered catastrophic and
20298 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020299 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20300 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20301
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 {
20303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020304 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020305
20306 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20307 return WDI_STATUS_E_FAILURE;
20308 }
20309
Jeff Johnsone7245742012-09-05 17:12:55 -070020310 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020311}/*WDI_SendIndication*/
20312
20313
20314/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020315 @brief WDI_DetectedDeviceError - called internally by DAL when
20316 it has detected a failure in the device
20317
20318 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020319 usErrorCode: error code detected by WDI or received
20320 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020321
Jeff Johnson295189b2012-06-20 16:38:30 -070020322 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020323 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020324*/
20325void
20326WDI_DetectedDeviceError
20327(
20328 WDI_ControlBlockType* pWDICtx,
20329 wpt_uint16 usErrorCode
20330)
20331{
20332 WDI_LowLevelIndType wdiInd;
20333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20334
20335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20336 "Device Error detected code: %d - transitioning to stopped state",
20337 usErrorCode);
20338
20339 wpalMutexAcquire(&pWDICtx->wptMutex);
20340
20341 WDI_STATableStop(pWDICtx);
20342
20343 WDI_ResetAssocSessions(pWDICtx);
20344
20345 /*Set the expected state transition to stopped - because the device
20346 experienced a failure*/
20347 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20348
20349 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020350 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020351
Jeff Johnsone7245742012-09-05 17:12:55 -070020352 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020353
20354 /*TO DO: - there should be an attempt to reset the device here*/
20355
20356 wpalMutexRelease(&pWDICtx->wptMutex);
20357
20358 /*------------------------------------------------------------------------
20359 Notify UMAC if a handler is registered
20360 ------------------------------------------------------------------------*/
20361 if (pWDICtx->wdiLowLevelIndCB)
20362 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020363 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20364 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020365
20366 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20367 }
20368}/*WDI_DetectedDeviceError*/
20369
20370/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020371 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020372 we started on send message has expire - this should
20373 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020374 reply - trigger catastrophic failure
20375 @param
20376
Jeff Johnson295189b2012-06-20 16:38:30 -070020377 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020378
20379 @see
20380 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020381*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020382void
Jeff Johnson295189b2012-06-20 16:38:30 -070020383WDI_ResponseTimerCB
20384(
20385 void *pUserData
20386)
20387{
20388 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20390
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020391 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070020392 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020394 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020396 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020397 }
20398
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020399 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020400 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020401
20402 /* If response timer is running at this time that means this timer
20403 * event is not for the last request but rather last-to-last request and
20404 * this timer event has come after we recevied respone for last-to-last
20405 * message
20406 */
20407 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20408 {
20409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20410 "WDI_ResponseTimerCB: timer in running state on timer event, "
20411 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20412 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20413 return;
20414 }
20415
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020416 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070020417 {
20418
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020420 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020421 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020422 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020423 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20424 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020425
20426 /* WDI timeout means Riva is not responding or SMD communication to Riva
20427 * is not happening. The only possible way to recover from this error
20428 * is to initiate SSR from APPS.
20429 * There is also an option to re-enable wifi, which will eventually
20430 * trigger SSR
20431 */
20432 if (gWDICb.bEnableSSR == false)
20433 {
20434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20435 "SSR is not enabled on WDI timeout");
20436 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20437 return;
20438 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020439#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020440 wpalWcnssResetIntr();
20441 /* if this timer fires, it means Riva did not receive the FIQ */
20442 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020443#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020444 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20445 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020446#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020447 }
20448 else
20449 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020451 "Timeout occurred but not waiting for any response %d "
20452 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20453 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20454 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020455 }
20456
20457 return;
20458
20459}/*WDI_ResponseTimerCB*/
20460
20461
20462/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020463 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020464
Jeff Johnsone7245742012-09-05 17:12:55 -070020465
20466 @param pWDICtx: pointer to the WLAN DAL context
20467 pEventData: pointer to the event information structure
20468
Jeff Johnson295189b2012-06-20 16:38:30 -070020469 @see
20470 @return Result of the function call
20471*/
20472WPT_INLINE WDI_Status
20473WDI_ProcessResponse
20474(
20475 WDI_ControlBlockType* pWDICtx,
20476 WDI_EventInfoType* pEventData
20477)
20478{
20479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20480
Jeff Johnsone7245742012-09-05 17:12:55 -070020481 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020482 already checked these pointers
20483 ! - revisit this assumption */
20484 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20485 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020486 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020488 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020489 WDI_getRespMsgString(pEventData->wdiResponse),
20490 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20491 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20492 }
20493 else
20494 {
20495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020496 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020497 pEventData->wdiResponse);
20498 return WDI_STATUS_E_NOT_IMPLEMENT;
20499 }
20500}/*WDI_ProcessResponse*/
20501
20502
20503/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020504 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020505=========================================================================*/
20506
20507/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020508 @brief Utility function used by the DAL Core to help queue a
20509 request that cannot be processed right away.
20510 @param
20511
Jeff Johnson295189b2012-06-20 16:38:30 -070020512 pWDICtx: - pointer to the WDI control block
20513 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020514 queued
20515
20516 @see
20517 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020518*/
20519WDI_Status
20520WDI_QueuePendingReq
20521(
20522 WDI_ControlBlockType* pWDICtx,
20523 WDI_EventInfoType* pEventData
20524)
20525{
Jeff Johnsone7245742012-09-05 17:12:55 -070020526 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020527 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020528 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20530
20531 if ( NULL == pEventDataQueue )
20532 {
20533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020534 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 WDI_ASSERT(0);
20536 return WDI_STATUS_MEM_FAILURE;
20537 }
20538
20539 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20540 pEventDataQueue->pUserData = pEventData->pUserData;
20541 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20542 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020543 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020544
20545 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20546 {
20547 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020548
Jeff Johnson295189b2012-06-20 16:38:30 -070020549 if ( NULL == pEventInfo )
20550 {
20551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020552 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020553 WDI_ASSERT(0);
20554 wpalMemoryFree(pEventDataQueue);
20555 return WDI_STATUS_MEM_FAILURE;
20556 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020557
Jeff Johnson295189b2012-06-20 16:38:30 -070020558 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20559
20560 }
20561 pEventDataQueue->pEventData = pEventInfo;
20562
20563 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020564 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020565
Jeff Johnsone7245742012-09-05 17:12:55 -070020566 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020567
20568 return WDI_STATUS_SUCCESS;
20569}/*WDI_QueuePendingReq*/
20570
20571/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020572 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020573 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020574 @param
20575
20576 pMsg - pointer to the message
20577
20578 @see
20579 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020580*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020581void
Jeff Johnson295189b2012-06-20 16:38:30 -070020582WDI_PALCtrlMsgCB
20583(
20584 wpt_msg *pMsg
20585)
20586{
20587 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020588 WDI_ControlBlockType* pWDICtx = NULL;
20589 WDI_Status wdiStatus;
20590 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020591 void* pUserData;
20592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20593
20594 if (( NULL == pMsg )||
20595 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20596 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20597 {
20598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020599 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020601 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020602 }
20603
20604 /*Transition back to the state that we had before serialization
20605 - serialization transitions us to BUSY to stop any incomming requests
20606 ! TO DO L: possible race condition here if a request comes in between the
20607 state transition and the post function*/
20608
Jeff Johnsone7245742012-09-05 17:12:55 -070020609 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020610
20611 /*-----------------------------------------------------------------------
20612 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020613 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020614 -----------------------------------------------------------------------*/
20615 switch ( pEventData->wdiRequest )
20616 {
20617
Jeff Johnsone7245742012-09-05 17:12:55 -070020618 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020619 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20620 break;
20621
Jeff Johnson295189b2012-06-20 16:38:30 -070020622 case WDI_NV_DOWNLOAD_REQ:
20623 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20624 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20625 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20626 {
20627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020628 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20630 }
20631 else
20632 {
20633 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20634 }
20635
20636 break;
20637
20638 default:
20639 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20640 break;
20641 }/*switch ( pEventData->wdiRequest )*/
20642
20643 if ( WDI_STATUS_SUCCESS != wdiStatus )
20644 {
20645 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20646
20647 if ( NULL != pfnReqStatusCB )
20648 {
20649 /*Fail the request*/
20650 pfnReqStatusCB( wdiStatus, pUserData);
20651 }
20652 }
20653
20654 /* Free data - that was allocated when queueing*/
20655 if( pEventData != NULL )
20656 {
20657 if( pEventData->pEventData != NULL )
20658 {
20659 wpalMemoryFree(pEventData->pEventData);
20660 }
20661 wpalMemoryFree(pEventData);
20662 }
20663
20664 if( pMsg != NULL )
20665 {
20666 wpalMemoryFree(pMsg);
20667 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020668
Jeff Johnson295189b2012-06-20 16:38:30 -070020669}/*WDI_PALCtrlMsgCB*/
20670
20671/**
20672 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020673 and schedule for execution a pending request
20674 @param
20675
Jeff Johnson295189b2012-06-20 16:38:30 -070020676 pWDICtx: - pointer to the WDI control block
20677 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020678 queued
20679
20680 @see
20681 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020682*/
20683WDI_Status
20684WDI_DequeuePendingReq
20685(
20686 WDI_ControlBlockType* pWDICtx
20687)
20688{
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020691 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20693
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020695
20696 if ( NULL == pNode )
20697 {
20698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020699 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020700 return WDI_STATUS_SUCCESS;
20701 }
20702
20703 /*The node actually points to the 1st element inside the Event Data struct -
20704 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020705 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020706
20707 /*Serialize processing in the control thread
20708 !TO DO: - check to see if these are all the messages params that need
20709 to be filled in*/
20710 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
20711
20712 if ( NULL == palMsg )
20713 {
20714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020715 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020717 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020718 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020719 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070020720 palMsg->callback = WDI_PALCtrlMsgCB;
20721 palMsg->ptr = pEventData;
20722
20723 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020724 palMsg->val = pWDICtx->uGlobalState;
20725
Jeff Johnson295189b2012-06-20 16:38:30 -070020726 /*Transition back to BUSY as we need to handle a queued request*/
20727 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070020728
Jeff Johnson295189b2012-06-20 16:38:30 -070020729 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
20730
20731 return WDI_STATUS_PENDING;
20732}/*WDI_DequeuePendingReq*/
20733
20734
20735/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020736 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020737 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020738 away.- The assoc requests will be queued by BSSID
20739 @param
20740
Jeff Johnson295189b2012-06-20 16:38:30 -070020741 pWDICtx: - pointer to the WDI control block
20742 pEventData: pointer to the evnt info that needs to be queued
20743 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070020744
20745 @see
20746 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020747*/
20748WDI_Status
20749WDI_QueueNewAssocRequest
20750(
20751 WDI_ControlBlockType* pWDICtx,
20752 WDI_EventInfoType* pEventData,
20753 wpt_macAddr macBSSID
20754)
20755{
Jeff Johnsone7245742012-09-05 17:12:55 -070020756 wpt_uint8 i;
20757 WDI_BSSSessionType* pSession = NULL;
20758 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020759 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020760 void* pEventInfo;
20761 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070020763
Jeff Johnsone7245742012-09-05 17:12:55 -070020764
20765 /*------------------------------------------------------------------------
20766 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020767 ------------------------------------------------------------------------*/
20768 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20769 {
20770 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
20771 {
20772 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020773 pSession = &pWDICtx->aBSSSessions[i];
20774 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070020775 }
20776 }
20777
20778 if ( i >= WDI_MAX_BSS_SESSIONS )
20779 {
20780 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020782 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020783
Jeff Johnson295189b2012-06-20 16:38:30 -070020784 /*------------------------------------------------------------------------
20785 Fill in the BSSID for this session and set the usage flag
20786 ------------------------------------------------------------------------*/
20787 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020789
20790 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020791 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020792 ------------------------------------------------------------------------*/
20793 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20794 if ( NULL == pEventDataQueue )
20795 {
20796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020797 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020798 WDI_ASSERT(0);
20799 return WDI_STATUS_MEM_FAILURE;
20800 }
20801
20802 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20803 if ( NULL == pSessionIdElement )
20804 {
20805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020806 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020807 WDI_ASSERT(0);
20808 wpalMemoryFree(pEventDataQueue);
20809 return WDI_STATUS_MEM_FAILURE;
20810 }
20811
20812 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20813 if ( NULL == pEventInfo )
20814 {
20815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020816 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020817 WDI_ASSERT(0);
20818 wpalMemoryFree(pSessionIdElement);
20819 wpalMemoryFree(pEventDataQueue);
20820 return WDI_STATUS_MEM_FAILURE;
20821 }
20822
20823 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20824 pEventDataQueue->pUserData = pEventData->pUserData;
20825 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20826 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020827 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020828
20829 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20830 pEventDataQueue->pEventData = pEventInfo;
20831
20832 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020833 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020834
20835 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020836 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020837
Jeff Johnsone7245742012-09-05 17:12:55 -070020838 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020839
20840 /*We need to maintain a separate list that keeps track of the order in which
20841 the new assoc requests are being queued such that we can start processing
20842 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020843 pSessionIdElement->ucIndex = i;
20844 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020845
20846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20847 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020848 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020849
20850 /*Return pending as this is what the status of the request is since it has
20851 been queued*/
20852 return WDI_STATUS_PENDING;
20853}/*WDI_QueueNewAssocRequest*/
20854
20855/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020856 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020857 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020858 away.- The assoc requests will be queued by BSSID
20859 @param
20860
Jeff Johnson295189b2012-06-20 16:38:30 -070020861 pWDICtx: - pointer to the WDI control block
20862 pSession: - session in which to queue
20863 pEventData: pointer to the event info that needs to be
20864 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020865
20866 @see
20867 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020868*/
20869WDI_Status
20870WDI_QueueAssocRequest
20871(
20872 WDI_ControlBlockType* pWDICtx,
20873 WDI_BSSSessionType* pSession,
20874 WDI_EventInfoType* pEventData
20875)
20876{
Jeff Johnsone7245742012-09-05 17:12:55 -070020877 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020879 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020881
20882 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020883 Sanity check
20884 ------------------------------------------------------------------------*/
20885 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20886 {
20887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020888 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020889
Jeff Johnsone7245742012-09-05 17:12:55 -070020890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020891 }
20892
20893 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020894 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020895 ------------------------------------------------------------------------*/
20896 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20897 if ( NULL == pEventDataQueue )
20898 {
20899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020900 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020901 WDI_ASSERT(0);
20902 return WDI_STATUS_MEM_FAILURE;
20903 }
20904
20905 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20906 if ( NULL == pEventInfo )
20907 {
20908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20909 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020910 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020911 WDI_ASSERT(0);
20912 wpalMemoryFree(pEventDataQueue);
20913 return WDI_STATUS_MEM_FAILURE;
20914 }
20915
20916 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20917 pEventDataQueue->pUserData = pEventData->pUserData;
20918 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20919 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 pEventDataQueue->pEventData = pEventInfo;
20922
20923 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20924
20925 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020926 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020927
20928 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020929 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020930
Jeff Johnsone7245742012-09-05 17:12:55 -070020931 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020932
20933 /*The result of this operation is pending because the request has been
20934 queued and it will be processed at a later moment in time */
20935 return WDI_STATUS_PENDING;
20936}/*WDI_QueueAssocRequest*/
20937
20938/**
20939 @brief Utility function used by the DAL Core to help dequeue
20940 an association request that was pending
20941 The request will be queued up in front of the main
20942 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020943 @param
20944
Jeff Johnson295189b2012-06-20 16:38:30 -070020945 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020946
20947
20948 @see
20949 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020950*/
20951WDI_Status
20952WDI_DequeueAssocRequest
20953(
20954 WDI_ControlBlockType* pWDICtx
20955)
20956{
Jeff Johnsone7245742012-09-05 17:12:55 -070020957 wpt_list_node* pNode = NULL;
20958 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020959 WDI_BSSSessionType* pSession;
20960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020961
20962 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020963 Sanity check
20964 ------------------------------------------------------------------------*/
20965 if ( NULL == pWDICtx )
20966 {
20967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020968 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020969
Jeff Johnsone7245742012-09-05 17:12:55 -070020970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020971 }
20972
20973 /*------------------------------------------------------------------------
20974 An association has been completed => a new association can occur
20975 Check to see if there are any pending associations ->
20976 If so , transfer all the pending requests into the busy queue for
20977 processing
20978 These requests have arrived prior to the requests in the busy queue
20979 (bc they needed to be processed in order to be placed in this queue)
20980 => they will be placed at the front of the busy queue
20981 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020982 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020983
20984 if ( NULL == pNode )
20985 {
20986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020987 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020988 return WDI_STATUS_SUCCESS;
20989 }
20990
20991 /*The node actually points to the 1st element inside the Session Id struct -
20992 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020993 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020994
20995 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20996 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20997
20998 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20999 {
21000 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021001
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021003 the front of the main waiting queue for subsequent execution*/
21004 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021005 while ( NULL != pNode )
21006 {
21007 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021008 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21009 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021010 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021011 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 }
21013 else
21014 {
21015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021016 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021017 WPAL_ASSERT(0);
21018 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021020 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021021
Jeff Johnson295189b2012-06-20 16:38:30 -070021022 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21023 wpalMemoryFree(pSessionIdElement);
21024 return WDI_STATUS_SUCCESS;
21025}/*WDI_DequeueAssocRequest*/
21026
21027/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021028 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021029 pending requests - all req cb will be called with
21030 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021031 @param
21032
Jeff Johnson295189b2012-06-20 16:38:30 -070021033 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021034
21035 @see
21036 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021037*/
21038WDI_Status
21039WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021040(
Jeff Johnson295189b2012-06-20 16:38:30 -070021041 WDI_ControlBlockType* pWDICtx
21042)
21043{
Jeff Johnsone7245742012-09-05 17:12:55 -070021044 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021046 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021047 void* pUserData;
21048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21049
Jeff Johnsone7245742012-09-05 17:12:55 -070021050 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021051
21052 /*------------------------------------------------------------------------
21053 Go through all the requests and fail them - this will only be called
21054 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021055 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021056 ------------------------------------------------------------------------*/
21057 while( pNode )
21058 {
21059 /*The node actually points to the 1st element inside the Event Data struct -
21060 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021061 pEventDataQueue = (WDI_EventInfoType*)pNode;
21062
Jeff Johnson295189b2012-06-20 16:38:30 -070021063 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21064 if ( NULL != pfnReqStatusCB )
21065 {
21066 /*Fail the request*/
21067 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21068 }
21069 /* Free data - that was allocated when queueing */
21070 if ( pEventDataQueue->pEventData != NULL )
21071 {
21072 wpalMemoryFree(pEventDataQueue->pEventData);
21073 }
21074 wpalMemoryFree(pEventDataQueue);
21075
21076 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21077 {
21078 break;
21079 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 }
21081
Jeff Johnson295189b2012-06-20 16:38:30 -070021082 return WDI_STATUS_SUCCESS;
21083}/*WDI_ClearPendingRequests*/
21084
21085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021086 @brief Helper routine used to init the BSS Sessions in the WDI control block
21087
21088
21089 @param pWDICtx: pointer to the WLAN DAL context
21090
Jeff Johnson295189b2012-06-20 16:38:30 -070021091 @see
21092*/
21093void
21094WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021095(
Jeff Johnson295189b2012-06-20 16:38:30 -070021096 WDI_ControlBlockType* pWDICtx
21097)
21098{
Jeff Johnsone7245742012-09-05 17:12:55 -070021099 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21101
21102 /*-------------------------------------------------------------------------
21103 No Sanity check
21104 -------------------------------------------------------------------------*/
21105 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21106 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021107 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021108 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21109 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21110 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21111 }
21112}/*WDI_ResetAssocSessions*/
21113
21114/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021115 @brief Helper routine used to find a session based on the BSSID
21116
21117
21118 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021119 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021120 pSession: pointer to the session (if found)
21121
Jeff Johnson295189b2012-06-20 16:38:30 -070021122 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021123 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021124*/
21125wpt_uint8
21126WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021127(
Jeff Johnson295189b2012-06-20 16:38:30 -070021128 WDI_ControlBlockType* pWDICtx,
21129 wpt_macAddr macBSSID,
21130 WDI_BSSSessionType** ppSession
21131)
21132{
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21135
21136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021137 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021138 -------------------------------------------------------------------------*/
21139 if ( NULL == ppSession )
21140 {
21141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021142 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021144 }
21145
Jeff Johnsone7245742012-09-05 17:12:55 -070021146 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021147
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 /*------------------------------------------------------------------------
21149 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021150 ------------------------------------------------------------------------*/
21151 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21152 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021153 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21154 (eWLAN_PAL_TRUE ==
21155 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21156 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021157 {
21158 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021159 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021160 return i;
21161 }
21162 }
21163
Jeff Johnsone7245742012-09-05 17:12:55 -070021164 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021165}/*WDI_FindAssocSession*/
21166
21167/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021168 @brief Helper routine used to find a session based on the BSSID
21169
21170
21171 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 ucBSSIdx: BSS Index of the session
21173 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021174
Jeff Johnson295189b2012-06-20 16:38:30 -070021175 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021176 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021177*/
21178wpt_uint8
21179WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021180(
Jeff Johnson295189b2012-06-20 16:38:30 -070021181 WDI_ControlBlockType* pWDICtx,
21182 wpt_uint16 ucBSSIdx,
21183 WDI_BSSSessionType** ppSession
21184)
21185{
Jeff Johnsone7245742012-09-05 17:12:55 -070021186 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21188
21189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021190 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021191 -------------------------------------------------------------------------*/
21192 if ( NULL == ppSession )
21193 {
21194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021195 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021196 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021197 }
21198
Jeff Johnsone7245742012-09-05 17:12:55 -070021199 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021200
Jeff Johnsone7245742012-09-05 17:12:55 -070021201 /*------------------------------------------------------------------------
21202 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021203 ------------------------------------------------------------------------*/
21204 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21205 {
21206 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21207 {
21208 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021209 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021210 return i;
21211 }
21212 }
21213
Jeff Johnsone7245742012-09-05 17:12:55 -070021214 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021215}/*WDI_FindAssocSessionByBSSIdx*/
21216
21217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021218 @brief Helper routine used to find a session based on the BSSID
21219
21220
21221 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021222 ucBSSIdx: BSS Index of the session
21223 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021224
Jeff Johnson295189b2012-06-20 16:38:30 -070021225 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021226 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021227*/
21228wpt_uint8
21229WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021230(
Jeff Johnson295189b2012-06-20 16:38:30 -070021231 WDI_ControlBlockType* pWDICtx,
21232 wpt_uint16 usIdx,
21233 WDI_BSSSessionType** ppSession
21234)
21235{
21236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21237
21238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021240 -------------------------------------------------------------------------*/
21241 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21242 {
21243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021244 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021245 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 }
21247
21248 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021249 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021250
21251 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021252
Jeff Johnson295189b2012-06-20 16:38:30 -070021253}/*WDI_FindAssocSessionByBSSIdx*/
21254
21255/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021256 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021257 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021258
21259
21260 @param pWDICtx: pointer to the WLAN DAL context
21261 pSession: pointer to the session (if found)
21262
Jeff Johnson295189b2012-06-20 16:38:30 -070021263 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021264 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021265*/
21266wpt_uint8
21267WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021268(
Jeff Johnson295189b2012-06-20 16:38:30 -070021269 WDI_ControlBlockType* pWDICtx,
21270 WDI_BSSSessionType** ppSession
21271)
21272{
Jeff Johnsone7245742012-09-05 17:12:55 -070021273 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021277 -------------------------------------------------------------------------*/
21278 if ( NULL == ppSession )
21279 {
21280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021281 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021282 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021283 }
21284
Jeff Johnsone7245742012-09-05 17:12:55 -070021285 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021286
Jeff Johnsone7245742012-09-05 17:12:55 -070021287 /*------------------------------------------------------------------------
21288 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021289 ------------------------------------------------------------------------*/
21290 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21291 {
21292 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21293 {
21294 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021295 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021296 return i;
21297 }
21298 }
21299
Jeff Johnsone7245742012-09-05 17:12:55 -070021300 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021301}/*WDI_FindEmptySession*/
21302
21303
21304/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021305 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021306 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021307
21308
21309 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070021310 macBSSID: pointer to BSSID. If NULL, get all the session.
21311 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
21312 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
21313 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070021314 @see
21315 @return Number of sessions in use
21316*/
21317wpt_uint8
21318WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021319(
Hoonki Lee26599972013-04-24 01:21:58 -070021320 WDI_ControlBlockType* pWDICtx,
21321 wpt_macAddr macBSSID,
21322 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021323)
21324{
Jeff Johnsone7245742012-09-05 17:12:55 -070021325 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021327
21328 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021329 Count all sessions in use
21330 ------------------------------------------------------------------------*/
21331 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21332 {
Hoonki Lee26599972013-04-24 01:21:58 -070021333 if ( macBSSID && skipBSSID &&
21334 (eWLAN_PAL_TRUE ==
21335 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21336 WDI_MAC_ADDR_LEN)))
21337 {
21338 continue;
21339 }
21340 else if ( pWDICtx->aBSSSessions[i].bInUse )
21341 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021342 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070021343 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021344 }
21345
Jeff Johnsone7245742012-09-05 17:12:55 -070021346 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021347}/*WDI_GetActiveSessionsCount*/
21348
21349/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021352
21353
21354 @param pWDICtx: pointer to the WLAN DAL context
21355 pSession: pointer to the session (if found)
21356
Jeff Johnson295189b2012-06-20 16:38:30 -070021357 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021358 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021359*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021360void
Jeff Johnson295189b2012-06-20 16:38:30 -070021361WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021362(
Jeff Johnson295189b2012-06-20 16:38:30 -070021363 WDI_ControlBlockType* pWDICtx,
21364 WDI_BSSSessionType* ppSession
21365)
21366{
21367 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021368 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021369 -------------------------------------------------------------------------*/
21370 if ( NULL == ppSession )
21371 {
21372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021373 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021374 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021375 }
21376
Jeff Johnsone7245742012-09-05 17:12:55 -070021377 /*------------------------------------------------------------------------
21378 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021379 ------------------------------------------------------------------------*/
21380 wpal_list_destroy(&ppSession->wptPendingQueue);
21381 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021382 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21383 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021384 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21385 wpal_list_init(&ppSession->wptPendingQueue);
21386
21387}/*WDI_DeleteSession*/
21388
21389/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021390 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021391 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021392 @param
21393
Jeff Johnson295189b2012-06-20 16:38:30 -070021394 WDI_AddStaParams: - pointer to the WDI Add STA params
21395 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021396
21397 @see
21398 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021399*/
21400void
21401WDI_AddBcastSTAtoSTATable
21402(
21403 WDI_ControlBlockType* pWDICtx,
21404 WDI_AddStaParams * staParams,
21405 wpt_uint16 usBcastStaIdx
21406)
21407{
21408 WDI_AddStaParams wdiAddSTAParam = {0};
21409 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21411
21412 /*---------------------------------------------------------------------
21413 Sanity check
21414 ---------------------------------------------------------------------*/
21415 if ( NULL == staParams )
21416 {
21417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021418 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021419
Jeff Johnsone7245742012-09-05 17:12:55 -070021420 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021421 }
21422
21423 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21424 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21425 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21426 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21427 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21428 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21429 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21430 WDI_MAC_ADDR_LEN );
21431 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21432 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21433 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21434 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21435 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21436 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21437 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021438
Jeff Johnson295189b2012-06-20 16:38:30 -070021439 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21440}
21441
21442/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021443 @brief NV blob will be divided into fragments of size 4kb and
21444 Sent to HAL
21445
21446 @param pWDICtx: pointer to the WLAN DAL context
21447 pEventData: pointer to the event information structure
21448
Jeff Johnson295189b2012-06-20 16:38:30 -070021449 @see
21450 @return Result of the function call
21451 */
21452
21453WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021454(
Jeff Johnson295189b2012-06-20 16:38:30 -070021455 WDI_ControlBlockType* pWDICtx,
21456 WDI_EventInfoType* pEventData
21457)
21458{
21459
21460 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21461 wpt_uint8* pSendBuffer = NULL;
21462 wpt_uint16 usDataOffset = 0;
21463 wpt_uint16 usSendSize = 0;
21464 wpt_uint16 usCurrentFragmentSize =0;
21465 wpt_uint8* pSrcBuffer = NULL;
21466 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21467 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21468
21469 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21470 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21471 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21472
Jeff Johnsone7245742012-09-05 17:12:55 -070021473 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021474 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21475
21476 /* Update the current Fragment Number */
21477 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21478
21479 /*Update the HAL REQ structure */
21480 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21481 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21482 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21483
21484 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021485 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021486 image will be sent to HAL*/
21487
Jeff Johnsone7245742012-09-05 17:12:55 -070021488 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021489 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021490 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021491 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021492 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021493 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21494 usCurrentFragmentSize = FRAGMENT_SIZE;
21495
21496 /*Update the HAL REQ structure */
21497 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21498 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21499
21500 }
21501 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021502 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021503 usCurrentFragmentSize = FRAGMENT_SIZE;
21504
21505 /*Update the HAL REQ structure */
21506 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21507 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21508 }
21509
21510 /*-----------------------------------------------------------------------
21511 Get message buffer
21512 -----------------------------------------------------------------------*/
21513 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21514 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21515 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021516 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021517 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21518 {
21519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21520 "Unable to get send buffer in NV Download req %x %x ",
21521 pEventData, pwdiNvDownloadReqParams);
21522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021524 }
21525
21526 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021527 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021528 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21529
21530 /* Appending the NV image fragment */
21531 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21532 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21533 usCurrentFragmentSize);
21534
21535 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021536 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021537
Jeff Johnsone7245742012-09-05 17:12:55 -070021538 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21539 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021540 WDI_NV_DOWNLOAD_RESP);
21541
21542}
Jeff Johnsone7245742012-09-05 17:12:55 -070021543/*============================================================================
21544 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021545 ============================================================================*/
21546/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021547 @brief Helper routine used to find a session based on the BSSID
21548 @param pContext: pointer to the WLAN DAL context
21549 @param pDPContext: pointer to the Datapath context
21550
Jeff Johnson295189b2012-06-20 16:38:30 -070021551 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021552 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021553*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021554WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021555WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21556{
21557 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21558
21559 pCB->pDPContext = pDPContext;
21560 return;
21561}
21562
21563/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021564 @brief Helper routine used to find a session based on the BSSID
21565
21566
21567 @param pContext: pointer to the WLAN DAL context
21568
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 @see
21570 @return pointer to Datapath context
21571*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021572WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021573WDI_DS_GetDatapathContext (void *pContext)
21574{
21575 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21576 return pCB->pDPContext;
21577}
21578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021579 @brief Helper routine used to find a session based on the BSSID
21580
21581
21582 @param pContext: pointer to the WLAN DAL context
21583 @param pDTDriverContext: pointer to the Transport Driver context
21584
Jeff Johnson295189b2012-06-20 16:38:30 -070021585 @see
21586 @return void
21587*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021588WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021589WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21590{
21591 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21592
21593 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021594 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021595}
21596
21597/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021598 @brief Helper routine used to find a session based on the BSSID
21599
21600
21601 @param pWDICtx: pointer to the WLAN DAL context
21602
Jeff Johnson295189b2012-06-20 16:38:30 -070021603 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021604 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021605*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021606WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021607WDT_GetTransportDriverContext (void *pContext)
21608{
21609 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021610 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021611}
21612
Jeff Johnsone7245742012-09-05 17:12:55 -070021613/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021614 Helper inline converters
21615 ============================================================================*/
21616/*Convert WDI driver type into HAL driver type*/
21617WPT_STATIC WPT_INLINE WDI_Status
21618WDI_HAL_2_WDI_STATUS
21619(
21620 eHalStatus halStatus
21621)
21622{
Jeff Johnsone7245742012-09-05 17:12:55 -070021623 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021624 the chances of getting inlined*/
21625 switch( halStatus )
21626 {
21627 case eHAL_STATUS_SUCCESS:
21628 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21629 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21630 return WDI_STATUS_SUCCESS;
21631 case eHAL_STATUS_FAILURE:
21632 return WDI_STATUS_E_FAILURE;
21633 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021634 return WDI_STATUS_MEM_FAILURE;
21635 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021636 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021637 default:
21638 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21639 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021640
Jeff Johnsone7245742012-09-05 17:12:55 -070021641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021642}/*WDI_HAL_2_WDI_STATUS*/
21643
21644/*Convert WDI request type into HAL request type*/
21645WPT_STATIC WPT_INLINE tHalHostMsgType
21646WDI_2_HAL_REQ_TYPE
21647(
21648 WDI_RequestEnumType wdiReqType
21649)
21650{
Jeff Johnsone7245742012-09-05 17:12:55 -070021651 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021652 the chances of getting inlined*/
21653 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021654 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021655 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021656 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021657 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021658 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021659 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021660 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021661 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021662 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021663 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021664 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021665 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021666 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021667 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021669 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021670 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021671 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021672 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021673 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021674 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021676 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021677 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021678 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021679 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021680 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021681 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021682 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021683 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021684 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021686 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021688 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021689 return WLAN_HAL_RMV_STAKEY_REQ;
21690 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021691 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021692 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021693 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021696 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021697 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021698 case WDI_DEL_BA_REQ:
21699 return WLAN_HAL_DEL_BA_REQ;
21700#ifdef FEATURE_WLAN_CCX
21701 case WDI_TSM_STATS_REQ:
21702 return WLAN_HAL_TSM_STATS_REQ;
21703#endif
21704 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021705 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021706 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021707 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021708 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021709 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021710 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021711 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021712 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021713 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021714 case WDI_ADD_BA_SESSION_REQ:
21715 return WLAN_HAL_ADD_BA_SESSION_REQ;
21716 case WDI_TRIGGER_BA_REQ:
21717 return WLAN_HAL_TRIGGER_BA_REQ;
21718 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021719 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021720 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021721 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021722 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
21723 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
21724 case WDI_SET_MAX_TX_POWER_REQ:
21725 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070021726 case WDI_SET_TX_POWER_REQ:
21727 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021728 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
21729 return WLAN_HAL_SET_P2P_GONOA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021730 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021731 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021732 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021733 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021734 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021735 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021736 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021737 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021738 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021739 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021740 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021741 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021742 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021743 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021744 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021745 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021746 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021747 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021748 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021749 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021750 case WDI_REM_BEACON_FILTER_REQ:
21751 return WLAN_HAL_REM_BCN_FILTER_REQ;
21752 case WDI_SET_RSSI_THRESHOLDS_REQ:
21753 return WLAN_HAL_SET_RSSI_THRESH_REQ;
21754 case WDI_HOST_OFFLOAD_REQ:
21755 return WLAN_HAL_HOST_OFFLOAD_REQ;
21756 case WDI_WOWL_ADD_BC_PTRN_REQ:
21757 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
21758 case WDI_WOWL_DEL_BC_PTRN_REQ:
21759 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
21760 case WDI_WOWL_ENTER_REQ:
21761 return WLAN_HAL_ENTER_WOWL_REQ;
21762 case WDI_WOWL_EXIT_REQ:
21763 return WLAN_HAL_EXIT_WOWL_REQ;
21764 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21765 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
21766 case WDI_NV_DOWNLOAD_REQ:
21767 return WLAN_HAL_DOWNLOAD_NV_REQ;
21768 case WDI_FLUSH_AC_REQ:
21769 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
21770 case WDI_BTAMP_EVENT_REQ:
21771 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
21772#ifdef WLAN_FEATURE_VOWIFI_11R
21773 case WDI_AGGR_ADD_TS_REQ:
21774 return WLAN_HAL_AGGR_ADD_TS_REQ;
21775#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070021776 case WDI_FTM_CMD_REQ:
21777 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021778 case WDI_ADD_STA_SELF_REQ:
21779 return WLAN_HAL_ADD_STA_SELF_REQ;
21780 case WDI_DEL_STA_SELF_REQ:
21781 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070021782#ifdef FEATURE_OEM_DATA_SUPPORT
21783 case WDI_START_OEM_DATA_REQ:
21784 return WLAN_HAL_START_OEM_DATA_REQ;
21785#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021786 case WDI_HOST_RESUME_REQ:
21787 return WLAN_HAL_HOST_RESUME_REQ;
21788 case WDI_HOST_SUSPEND_IND:
21789 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080021790 case WDI_TRAFFIC_STATS_IND:
21791 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070021792#ifdef WLAN_FEATURE_11W
21793 case WDI_EXCLUDE_UNENCRYPTED_IND:
21794 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
21795#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021796 case WDI_KEEP_ALIVE_REQ:
21797 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070021798#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070021799 case WDI_ROAM_SCAN_OFFLOAD_REQ:
21800 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070021801#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021802#ifdef FEATURE_WLAN_SCAN_PNO
21803 case WDI_SET_PREF_NETWORK_REQ:
21804 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21805 case WDI_SET_RSSI_FILTER_REQ:
21806 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21807 case WDI_UPDATE_SCAN_PARAMS_REQ:
21808 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21809#endif // FEATURE_WLAN_SCAN_PNO
21810 case WDI_SET_TX_PER_TRACKING_REQ:
21811 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21812#ifdef WLAN_FEATURE_PACKET_FILTERING
21813 case WDI_8023_MULTICAST_LIST_REQ:
21814 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21815 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021816 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021817 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21818 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21819 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21820 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21821#endif // WLAN_FEATURE_PACKET_FILTERING
21822 case WDI_HAL_DUMP_CMD_REQ:
21823 return WLAN_HAL_DUMP_COMMAND_REQ;
21824#ifdef WLAN_FEATURE_GTK_OFFLOAD
21825 case WDI_GTK_OFFLOAD_REQ:
21826 return WLAN_HAL_GTK_OFFLOAD_REQ;
21827 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21828 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21829#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21830
21831 case WDI_INIT_SCAN_CON_REQ:
21832 return WLAN_HAL_INIT_SCAN_CON_REQ;
21833 case WDI_SET_POWER_PARAMS_REQ:
21834 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21835 case WDI_SET_TM_LEVEL_REQ:
21836 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21837 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21838 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021839#ifdef WLAN_FEATURE_11AC
21840 case WDI_UPDATE_VHT_OP_MODE_REQ:
21841 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21842#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021843 case WDI_GET_ROAM_RSSI_REQ:
21844 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021845 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021846 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021847 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021848
Jeff Johnson295189b2012-06-20 16:38:30 -070021849}/*WDI_2_HAL_REQ_TYPE*/
21850
21851/*Convert WDI response type into HAL response type*/
21852WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21853HAL_2_WDI_RSP_TYPE
21854(
21855 tHalHostMsgType halMsg
21856)
21857{
Jeff Johnsone7245742012-09-05 17:12:55 -070021858 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021859 the chances of getting inlined*/
21860 switch( halMsg )
21861 {
21862 case WLAN_HAL_START_RSP:
21863 return WDI_START_RESP;
21864 case WLAN_HAL_STOP_RSP:
21865 return WDI_STOP_RESP;
21866 case WLAN_HAL_INIT_SCAN_RSP:
21867 return WDI_INIT_SCAN_RESP;
21868 case WLAN_HAL_START_SCAN_RSP:
21869 return WDI_START_SCAN_RESP;
21870 case WLAN_HAL_END_SCAN_RSP:
21871 return WDI_END_SCAN_RESP;
21872 case WLAN_HAL_FINISH_SCAN_RSP:
21873 return WDI_FINISH_SCAN_RESP;
21874 case WLAN_HAL_CONFIG_STA_RSP:
21875 return WDI_CONFIG_STA_RESP;
21876 case WLAN_HAL_DELETE_STA_RSP:
21877 return WDI_DEL_STA_RESP;
21878 case WLAN_HAL_CONFIG_BSS_RSP:
21879 return WDI_CONFIG_BSS_RESP;
21880 case WLAN_HAL_DELETE_BSS_RSP:
21881 return WDI_DEL_BSS_RESP;
21882 case WLAN_HAL_JOIN_RSP:
21883 return WDI_JOIN_RESP;
21884 case WLAN_HAL_POST_ASSOC_RSP:
21885 return WDI_POST_ASSOC_RESP;
21886 case WLAN_HAL_SET_BSSKEY_RSP:
21887 return WDI_SET_BSS_KEY_RESP;
21888 case WLAN_HAL_SET_STAKEY_RSP:
21889 return WDI_SET_STA_KEY_RESP;
21890 case WLAN_HAL_RMV_BSSKEY_RSP:
21891 return WDI_RMV_BSS_KEY_RESP;
21892 case WLAN_HAL_RMV_STAKEY_RSP:
21893 return WDI_RMV_STA_KEY_RESP;
21894 case WLAN_HAL_SET_BCASTKEY_RSP:
21895 return WDI_SET_STA_BCAST_KEY_RESP;
21896 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21897 // return WDI_RMV_STA_BCAST_KEY_RESP;
21898 case WLAN_HAL_ADD_TS_RSP:
21899 return WDI_ADD_TS_RESP;
21900 case WLAN_HAL_DEL_TS_RSP:
21901 return WDI_DEL_TS_RESP;
21902 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21903 return WDI_UPD_EDCA_PRMS_RESP;
21904 case WLAN_HAL_ADD_BA_RSP:
21905 return WDI_ADD_BA_RESP;
21906 case WLAN_HAL_DEL_BA_RSP:
21907 return WDI_DEL_BA_RESP;
21908#ifdef FEATURE_WLAN_CCX
21909 case WLAN_HAL_TSM_STATS_RSP:
21910 return WDI_TSM_STATS_RESP;
21911#endif
21912 case WLAN_HAL_CH_SWITCH_RSP:
21913 return WDI_CH_SWITCH_RESP;
21914 case WLAN_HAL_SET_LINK_ST_RSP:
21915 return WDI_SET_LINK_ST_RESP;
21916 case WLAN_HAL_GET_STATS_RSP:
21917 return WDI_GET_STATS_RESP;
21918 case WLAN_HAL_UPDATE_CFG_RSP:
21919 return WDI_UPDATE_CFG_RESP;
21920 case WLAN_HAL_ADD_BA_SESSION_RSP:
21921 return WDI_ADD_BA_SESSION_RESP;
21922 case WLAN_HAL_TRIGGER_BA_RSP:
21923 return WDI_TRIGGER_BA_RESP;
21924 case WLAN_HAL_UPDATE_BEACON_RSP:
21925 return WDI_UPD_BCON_PRMS_RESP;
21926 case WLAN_HAL_SEND_BEACON_RSP:
21927 return WDI_SND_BCON_RESP;
21928 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21929 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21930 /*Indications*/
21931 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21932 return WDI_HAL_RSSI_NOTIFICATION_IND;
21933 case WLAN_HAL_MISSED_BEACON_IND:
21934 return WDI_HAL_MISSED_BEACON_IND;
21935 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21936 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21937 case WLAN_HAL_MIC_FAILURE_IND:
21938 return WDI_HAL_MIC_FAILURE_IND;
21939 case WLAN_HAL_FATAL_ERROR_IND:
21940 return WDI_HAL_FATAL_ERROR_IND;
21941 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21942 return WDI_HAL_DEL_STA_IND;
21943 case WLAN_HAL_COEX_IND:
21944 return WDI_HAL_COEX_IND;
21945 case WLAN_HAL_OTA_TX_COMPL_IND:
21946 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021947 case WLAN_HAL_P2P_NOA_ATTR_IND:
21948 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021949 case WLAN_HAL_P2P_NOA_START_IND:
21950 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 case WLAN_HAL_TX_PER_HIT_IND:
21952 return WDI_HAL_TX_PER_HIT_IND;
21953 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21954 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070021955 case WLAN_HAL_SET_TX_POWER_RSP:
21956 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 case WLAN_HAL_SET_P2P_GONOA_RSP:
21958 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021960 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021961 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021962 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021964 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021966 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021968 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021969 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021970 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021971 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021972 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021974 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021976 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021977 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21978 return WDI_SET_BEACON_FILTER_RESP;
21979 case WLAN_HAL_REM_BCN_FILTER_RSP:
21980 return WDI_REM_BEACON_FILTER_RESP;
21981 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21982 return WDI_SET_RSSI_THRESHOLDS_RESP;
21983 case WLAN_HAL_HOST_OFFLOAD_RSP:
21984 return WDI_HOST_OFFLOAD_RESP;
21985 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21986 return WDI_WOWL_ADD_BC_PTRN_RESP;
21987 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21988 return WDI_WOWL_DEL_BC_PTRN_RESP;
21989 case WLAN_HAL_ENTER_WOWL_RSP:
21990 return WDI_WOWL_ENTER_RESP;
21991 case WLAN_HAL_EXIT_WOWL_RSP:
21992 return WDI_WOWL_EXIT_RESP;
21993 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21994 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21995 case WLAN_HAL_DOWNLOAD_NV_RSP:
21996 return WDI_NV_DOWNLOAD_RESP;
21997 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21998 return WDI_FLUSH_AC_RESP;
21999 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22000 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022001 case WLAN_HAL_PROCESS_PTT_RSP:
22002 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022003 case WLAN_HAL_ADD_STA_SELF_RSP:
22004 return WDI_ADD_STA_SELF_RESP;
22005case WLAN_HAL_DEL_STA_SELF_RSP:
22006 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022007#ifdef FEATURE_OEM_DATA_SUPPORT
22008 case WLAN_HAL_START_OEM_DATA_RSP:
22009 return WDI_START_OEM_DATA_RESP;
22010#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022011 case WLAN_HAL_HOST_RESUME_RSP:
22012 return WDI_HOST_RESUME_RESP;
22013 case WLAN_HAL_KEEP_ALIVE_RSP:
22014 return WDI_KEEP_ALIVE_RESP;
22015#ifdef FEATURE_WLAN_SCAN_PNO
22016 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22017 return WDI_SET_PREF_NETWORK_RESP;
22018 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022019 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22021 return WDI_UPDATE_SCAN_PARAMS_RESP;
22022 case WLAN_HAL_PREF_NETW_FOUND_IND:
22023 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22024#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022025#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022026 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22027 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022028#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022029 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22030 return WDI_SET_TX_PER_TRACKING_RESP;
22031#ifdef WLAN_FEATURE_PACKET_FILTERING
22032 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22033 return WDI_8023_MULTICAST_LIST_RESP;
22034 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22035 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22036 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22037 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22038 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22039 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22040#endif // WLAN_FEATURE_PACKET_FILTERING
22041
22042 case WLAN_HAL_DUMP_COMMAND_RSP:
22043 return WDI_HAL_DUMP_CMD_RESP;
22044 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22045 return WDI_SET_POWER_PARAMS_RESP;
22046#ifdef WLAN_FEATURE_VOWIFI_11R
22047 case WLAN_HAL_AGGR_ADD_TS_RSP:
22048 return WDI_AGGR_ADD_TS_RESP;
22049#endif
22050
22051#ifdef WLAN_FEATURE_GTK_OFFLOAD
22052 case WLAN_HAL_GTK_OFFLOAD_RSP:
22053 return WDI_GTK_OFFLOAD_RESP;
22054 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22055 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22056#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22057#ifdef WLAN_WAKEUP_EVENTS
22058 case WLAN_HAL_WAKE_REASON_IND:
22059 return WDI_HAL_WAKE_REASON_IND;
22060#endif // WLAN_WAKEUP_EVENTS
22061
22062 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22063 return WDI_SET_TM_LEVEL_RESP;
22064 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22065 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022066#ifdef WLAN_FEATURE_11AC
22067 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22068 return WDI_UPDATE_VHT_OP_MODE_RESP;
22069#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022070#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22071 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22072 return WDI_GET_ROAM_RSSI_RESP;
22073#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022074 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022075 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022076 }
22077
22078}/*HAL_2_WDI_RSP_TYPE*/
22079
22080
22081/*Convert WDI driver type into HAL driver type*/
22082WPT_STATIC WPT_INLINE tDriverType
22083WDI_2_HAL_DRV_TYPE
22084(
22085 WDI_DriverType wdiDriverType
22086)
22087{
Jeff Johnsone7245742012-09-05 17:12:55 -070022088 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022089 the chances of getting inlined*/
22090 switch( wdiDriverType )
22091 {
22092 case WDI_DRIVER_TYPE_PRODUCTION:
22093 return eDRIVER_TYPE_PRODUCTION;
22094 case WDI_DRIVER_TYPE_MFG:
22095 return eDRIVER_TYPE_MFG;
22096 case WDI_DRIVER_TYPE_DVT:
22097 return eDRIVER_TYPE_DVT;
22098 }
22099
Jeff Johnsone7245742012-09-05 17:12:55 -070022100 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022101}/*WDI_2_HAL_DRV_TYPE*/
22102
22103
22104/*Convert WDI stop reason into HAL stop reason*/
22105WPT_STATIC WPT_INLINE tHalStopType
22106WDI_2_HAL_STOP_REASON
22107(
22108 WDI_StopType wdiDriverType
22109)
22110{
Jeff Johnsone7245742012-09-05 17:12:55 -070022111 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022112 the chances of getting inlined*/
22113 switch( wdiDriverType )
22114 {
22115 case WDI_STOP_TYPE_SYS_RESET:
22116 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022117 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22118 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022119 case WDI_STOP_TYPE_RF_KILL:
22120 return HAL_STOP_TYPE_RF_KILL;
22121 }
22122
Jeff Johnsone7245742012-09-05 17:12:55 -070022123 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022124}/*WDI_2_HAL_STOP_REASON*/
22125
22126
22127/*Convert WDI scan mode type into HAL scan mode type*/
22128WPT_STATIC WPT_INLINE eHalSysMode
22129WDI_2_HAL_SCAN_MODE
22130(
22131 WDI_ScanMode wdiScanMode
22132)
22133{
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 the chances of getting inlined*/
22136 switch( wdiScanMode )
22137 {
22138 case WDI_SCAN_MODE_NORMAL:
22139 return eHAL_SYS_MODE_NORMAL;
22140 case WDI_SCAN_MODE_LEARN:
22141 return eHAL_SYS_MODE_LEARN;
22142 case WDI_SCAN_MODE_SCAN:
22143 return eHAL_SYS_MODE_SCAN;
22144 case WDI_SCAN_MODE_PROMISC:
22145 return eHAL_SYS_MODE_PROMISC;
22146 case WDI_SCAN_MODE_SUSPEND_LINK:
22147 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022148 case WDI_SCAN_MODE_ROAM_SCAN:
22149 return eHAL_SYS_MODE_ROAM_SCAN;
22150 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22151 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022152 }
22153
Jeff Johnsone7245742012-09-05 17:12:55 -070022154 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022155}/*WDI_2_HAL_SCAN_MODE*/
22156
22157/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022158WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022159WDI_2_HAL_SEC_CH_OFFSET
22160(
22161 WDI_HTSecondaryChannelOffset wdiSecChOffset
22162)
22163{
Jeff Johnsone7245742012-09-05 17:12:55 -070022164 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022165 the chances of getting inlined*/
22166 switch( wdiSecChOffset )
22167 {
22168 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022169 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022170 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022171 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022172 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022173 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22174#ifdef WLAN_FEATURE_11AC
22175 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22176 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22177 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22178 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22179 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22180 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22181 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22182 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22183 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22184 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22185 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22186 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22187 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22188 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22189#endif
22190 default:
22191 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 }
22193
Jeff Johnsone7245742012-09-05 17:12:55 -070022194 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022195}/*WDI_2_HAL_SEC_CH_OFFSET*/
22196
22197/*Convert WDI BSS type into HAL BSS type*/
22198WPT_STATIC WPT_INLINE tSirBssType
22199WDI_2_HAL_BSS_TYPE
22200(
22201 WDI_BssType wdiBSSType
22202)
22203{
Jeff Johnsone7245742012-09-05 17:12:55 -070022204 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 the chances of getting inlined*/
22206 switch( wdiBSSType )
22207 {
22208 case WDI_INFRASTRUCTURE_MODE:
22209 return eSIR_INFRASTRUCTURE_MODE;
22210 case WDI_INFRA_AP_MODE:
22211 return eSIR_INFRA_AP_MODE;
22212 case WDI_IBSS_MODE:
22213 return eSIR_IBSS_MODE;
22214 case WDI_BTAMP_STA_MODE:
22215 return eSIR_BTAMP_STA_MODE;
22216 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022217 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022218 case WDI_BSS_AUTO_MODE:
22219 return eSIR_AUTO_MODE;
22220 }
22221
Jeff Johnsone7245742012-09-05 17:12:55 -070022222 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022223}/*WDI_2_HAL_BSS_TYPE*/
22224
22225/*Convert WDI NW type into HAL NW type*/
22226WPT_STATIC WPT_INLINE tSirNwType
22227WDI_2_HAL_NW_TYPE
22228(
22229 WDI_NwType wdiNWType
22230)
22231{
Jeff Johnsone7245742012-09-05 17:12:55 -070022232 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022233 the chances of getting inlined*/
22234 switch( wdiNWType )
22235 {
22236 case WDI_11A_NW_TYPE:
22237 return eSIR_11A_NW_TYPE;
22238 case WDI_11B_NW_TYPE:
22239 return eSIR_11B_NW_TYPE;
22240 case WDI_11G_NW_TYPE:
22241 return eSIR_11G_NW_TYPE;
22242 case WDI_11N_NW_TYPE:
22243 return eSIR_11N_NW_TYPE;
22244 }
22245
Jeff Johnsone7245742012-09-05 17:12:55 -070022246 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022247}/*WDI_2_HAL_NW_TYPE*/
22248
22249/*Convert WDI chanel bonding type into HAL cb type*/
22250WPT_STATIC WPT_INLINE ePhyChanBondState
22251WDI_2_HAL_CB_STATE
22252(
22253 WDI_PhyChanBondState wdiCbState
22254)
22255{
Jeff Johnsone7245742012-09-05 17:12:55 -070022256 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 the chances of getting inlined*/
22258 switch ( wdiCbState )
22259 {
22260 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22261 return PHY_SINGLE_CHANNEL_CENTERED;
22262 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22263 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22264 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22265 return PHY_DOUBLE_CHANNEL_CENTERED;
22266 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22267 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022268#ifdef WLAN_FEATURE_11AC
22269 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22270 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22271 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22272 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22273 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22274 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22275 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22276 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22277 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22278 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22279 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22280 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22281 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22282 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22283#endif
22284 case WDI_MAX_CB_STATE:
22285 default:
22286 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022287 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022288
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 return PHY_CHANNEL_BONDING_STATE_MAX;
22290}/*WDI_2_HAL_CB_STATE*/
22291
22292/*Convert WDI chanel bonding type into HAL cb type*/
22293WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22294WDI_2_HAL_HT_OPER_MODE
22295(
22296 WDI_HTOperatingMode wdiHTOperMode
22297)
22298{
Jeff Johnsone7245742012-09-05 17:12:55 -070022299 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022300 the chances of getting inlined*/
22301 switch ( wdiHTOperMode )
22302 {
22303 case WDI_HT_OP_MODE_PURE:
22304 return eSIR_HT_OP_MODE_PURE;
22305 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22306 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22307 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22308 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22309 case WDI_HT_OP_MODE_MIXED:
22310 return eSIR_HT_OP_MODE_MIXED;
22311 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022312
Jeff Johnson295189b2012-06-20 16:38:30 -070022313 return eSIR_HT_OP_MODE_MAX;
22314}/*WDI_2_HAL_HT_OPER_MODE*/
22315
22316/*Convert WDI mimo PS type into HAL mimo PS type*/
22317WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22318WDI_2_HAL_MIMO_PS
22319(
22320 WDI_HTMIMOPowerSaveState wdiHTOperMode
22321)
22322{
Jeff Johnsone7245742012-09-05 17:12:55 -070022323 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022324 the chances of getting inlined*/
22325 switch ( wdiHTOperMode )
22326 {
22327 case WDI_HT_MIMO_PS_STATIC:
22328 return eSIR_HT_MIMO_PS_STATIC;
22329 case WDI_HT_MIMO_PS_DYNAMIC:
22330 return eSIR_HT_MIMO_PS_DYNAMIC;
22331 case WDI_HT_MIMO_PS_NA:
22332 return eSIR_HT_MIMO_PS_NA;
22333 case WDI_HT_MIMO_PS_NO_LIMIT:
22334 return eSIR_HT_MIMO_PS_NO_LIMIT;
22335 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022336
Jeff Johnson295189b2012-06-20 16:38:30 -070022337 return eSIR_HT_MIMO_PS_MAX;
22338}/*WDI_2_HAL_MIMO_PS*/
22339
22340/*Convert WDI ENC type into HAL ENC type*/
22341WPT_STATIC WPT_INLINE tAniEdType
22342WDI_2_HAL_ENC_TYPE
22343(
22344 WDI_EncryptType wdiEncType
22345)
22346{
Jeff Johnsone7245742012-09-05 17:12:55 -070022347 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 the chances of getting inlined*/
22349 switch ( wdiEncType )
22350 {
22351 case WDI_ENCR_NONE:
22352 return eSIR_ED_NONE;
22353
22354 case WDI_ENCR_WEP40:
22355 return eSIR_ED_WEP40;
22356
22357 case WDI_ENCR_WEP104:
22358 return eSIR_ED_WEP104;
22359
22360 case WDI_ENCR_TKIP:
22361 return eSIR_ED_TKIP;
22362
22363 case WDI_ENCR_CCMP:
22364 return eSIR_ED_CCMP;
22365
22366 case WDI_ENCR_AES_128_CMAC:
22367 return eSIR_ED_AES_128_CMAC;
22368#if defined(FEATURE_WLAN_WAPI)
22369 case WDI_ENCR_WPI:
22370 return eSIR_ED_WPI;
22371#endif
22372 default:
22373 return eSIR_ED_NOT_IMPLEMENTED;
22374 }
22375
22376}/*WDI_2_HAL_ENC_TYPE*/
22377
22378/*Convert WDI WEP type into HAL WEP type*/
22379WPT_STATIC WPT_INLINE tAniWepType
22380WDI_2_HAL_WEP_TYPE
22381(
22382 WDI_WepType wdiWEPType
22383)
22384{
Jeff Johnsone7245742012-09-05 17:12:55 -070022385 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022386 the chances of getting inlined*/
22387 switch ( wdiWEPType )
22388 {
22389 case WDI_WEP_STATIC:
22390 return eSIR_WEP_STATIC;
22391
22392 case WDI_WEP_DYNAMIC:
22393 return eSIR_WEP_DYNAMIC;
22394 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022395
Jeff Johnson295189b2012-06-20 16:38:30 -070022396 return eSIR_WEP_MAX;
22397}/*WDI_2_HAL_WEP_TYPE*/
22398
22399WPT_STATIC WPT_INLINE tSirLinkState
22400WDI_2_HAL_LINK_STATE
22401(
22402 WDI_LinkStateType wdiLinkState
22403)
22404{
Jeff Johnsone7245742012-09-05 17:12:55 -070022405 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022406 the chances of getting inlined*/
22407 switch ( wdiLinkState )
22408 {
22409 case WDI_LINK_IDLE_STATE:
22410 return eSIR_LINK_IDLE_STATE;
22411
22412 case WDI_LINK_PREASSOC_STATE:
22413 return eSIR_LINK_PREASSOC_STATE;
22414
22415 case WDI_LINK_POSTASSOC_STATE:
22416 return eSIR_LINK_POSTASSOC_STATE;
22417
22418 case WDI_LINK_AP_STATE:
22419 return eSIR_LINK_AP_STATE;
22420
22421 case WDI_LINK_IBSS_STATE:
22422 return eSIR_LINK_IBSS_STATE;
22423
22424 case WDI_LINK_BTAMP_PREASSOC_STATE:
22425 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22426
22427 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22428 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22429
22430 case WDI_LINK_BTAMP_AP_STATE:
22431 return eSIR_LINK_BTAMP_AP_STATE;
22432
22433 case WDI_LINK_BTAMP_STA_STATE:
22434 return eSIR_LINK_BTAMP_STA_STATE;
22435
22436 case WDI_LINK_LEARN_STATE:
22437 return eSIR_LINK_LEARN_STATE;
22438
22439 case WDI_LINK_SCAN_STATE:
22440 return eSIR_LINK_SCAN_STATE;
22441
22442 case WDI_LINK_FINISH_SCAN_STATE:
22443 return eSIR_LINK_FINISH_SCAN_STATE;
22444
22445 case WDI_LINK_INIT_CAL_STATE:
22446 return eSIR_LINK_INIT_CAL_STATE;
22447
22448 case WDI_LINK_FINISH_CAL_STATE:
22449 return eSIR_LINK_FINISH_CAL_STATE;
22450
Jeff Johnson295189b2012-06-20 16:38:30 -070022451 case WDI_LINK_LISTEN_STATE:
22452 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022453
22454 default:
22455 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022456 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022457}
22458
Jeff Johnsone7245742012-09-05 17:12:55 -070022459/*Translate a STA Context from WDI into HAL*/
22460WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022461void
22462WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022463(
Jeff Johnson295189b2012-06-20 16:38:30 -070022464 tConfigStaParams* phalConfigSta,
22465 WDI_ConfigStaReqInfoType* pwdiConfigSta
22466)
22467{
22468 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022469#ifdef WLAN_FEATURE_11AC
22470 /* Get the Version 1 Handler */
22471 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22472 if (WDI_getFwWlanFeatCaps(DOT11AC))
22473 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022474 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 }
22476#endif
22477 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 the chances of getting inlined*/
22479
Jeff Johnsone7245742012-09-05 17:12:55 -070022480 wpalMemoryCopy(phalConfigSta->bssId,
22481 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22482
22483 wpalMemoryCopy(phalConfigSta->staMac,
22484 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022485
22486 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22487 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22488 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22489 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22490 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22491 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22492 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22493 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22494 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22495 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22496 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22497 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22498 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22499 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22500 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22501 phalConfigSta->action = pwdiConfigSta->wdiAction;
22502 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22503 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22504 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22505 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22506 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22507 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22508 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022509
Jeff Johnson295189b2012-06-20 16:38:30 -070022510 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22511
Jeff Johnsone7245742012-09-05 17:12:55 -070022512 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022513 pwdiConfigSta->wdiSupportedRates.opRateMode;
22514 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22515 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022516 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022517 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22518 }
22519 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22520 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022521 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022522 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22523 }
22524 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22525 {
22526 phalConfigSta->supportedRates.aniLegacyRates[i] =
22527 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22528 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022529 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022530 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22531 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22532 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022533 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022534 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22535 }
22536 phalConfigSta->supportedRates.rxHighestDataRate =
22537 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22538
Jeff Johnsone7245742012-09-05 17:12:55 -070022539#ifdef WLAN_FEATURE_11AC
22540 if(phalConfigSta_V1 != NULL)
22541 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022542 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22543 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22544 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22545 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022546 }
22547#endif
22548
Jeff Johnson295189b2012-06-20 16:38:30 -070022549 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022550
Jeff Johnsone7245742012-09-05 17:12:55 -070022551#ifdef WLAN_FEATURE_11AC
22552 if(phalConfigSta_V1 != NULL)
22553 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022554 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22555 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022556 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022557 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22558 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22559
Jeff Johnsone7245742012-09-05 17:12:55 -070022560 }
22561#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022562}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022563
22564/*Translate a Rate set info from WDI into HAL*/
22565WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022566WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070022567(
Jeff Johnson295189b2012-06-20 16:38:30 -070022568 tSirMacRateSet* pHalRateSet,
22569 WDI_RateSet* pwdiRateSet
22570)
22571{
Jeff Johnsone7245742012-09-05 17:12:55 -070022572 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22574
22575 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
22576 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
22577
22578 for ( i = 0; i < pHalRateSet->numRates; i++ )
22579 {
22580 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
22581 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022582
Jeff Johnson295189b2012-06-20 16:38:30 -070022583}/*WDI_CopyWDIRateSetToHALRateSet*/
22584
22585
22586/*Translate an EDCA Parameter Record from WDI into HAL*/
22587WPT_STATIC WPT_INLINE void
22588WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022589(
Jeff Johnson295189b2012-06-20 16:38:30 -070022590 tSirMacEdcaParamRecord* phalEdcaParam,
22591 WDI_EdcaParamRecord* pWDIEdcaParam
22592)
22593{
Jeff Johnsone7245742012-09-05 17:12:55 -070022594 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022595 the chances of getting inlined*/
22596
22597 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22598 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22599 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22600 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22601
22602 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22603 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22604 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22605}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22606
22607
22608/*Copy a management frame header from WDI fmt into HAL fmt*/
22609WPT_STATIC WPT_INLINE void
22610WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22611(
22612 tSirMacMgmtHdr* pmacMgmtHdr,
22613 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22614)
22615{
22616 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22617 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22618 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22619 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22620 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22621 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22622 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22623 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22624 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22625 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22626 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22627
22628 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22629 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22630
Jeff Johnsone7245742012-09-05 17:12:55 -070022631 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022632 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022633 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022634 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022635 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022636 pwdiMacMgmtHdr->bssId, 6);
22637
22638 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22639 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22640 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22641
22642}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22643
22644
22645/*Copy config bss parameters from WDI fmt into HAL fmt*/
22646WPT_STATIC WPT_INLINE void
22647WDI_CopyWDIConfigBSSToHALConfigBSS
22648(
22649 tConfigBssParams* phalConfigBSS,
22650 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22651)
22652{
22653
22654 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022655#ifdef WLAN_FEATURE_11AC
22656 /* Get the Version 1 Handler */
22657 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22658 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022659 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022660#endif
22661
Jeff Johnson295189b2012-06-20 16:38:30 -070022662 wpalMemoryCopy( phalConfigBSS->bssId,
22663 pwdiConfigBSS->macBSSID,
22664 WDI_MAC_ADDR_LEN);
22665
22666#ifdef HAL_SELF_STA_PER_BSS
22667 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22668 pwdiConfigBSS->macSelfAddr,
22669 WDI_MAC_ADDR_LEN);
22670#endif
22671
22672 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22673
22674 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22675 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22676
Jeff Johnsone7245742012-09-05 17:12:55 -070022677 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022678 pwdiConfigBSS->ucShortSlotTimeSupported;
22679 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22680 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22681 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22682 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22683 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022684 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022685 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22686 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22687 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22688 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22689 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22690 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22691 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22692 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22693 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22694 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
22695 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
22696
Jeff Johnsone7245742012-09-05 17:12:55 -070022697 phalConfigBSS->htOperMode =
22698 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070022699
22700 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
22701 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
22702 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
22703 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
22704
22705#ifdef WLAN_FEATURE_VOWIFI
22706 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
22707#endif
22708
22709 /*! Used 32 as magic number because that is how the ssid is declared inside the
22710 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070022711 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070022712 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
22713 pwdiConfigBSS->wdiSSID.ucLength : 32;
22714 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070022715 pwdiConfigBSS->wdiSSID.sSSID,
22716 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022717
22718 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
22719 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070022720
Jeff Johnson295189b2012-06-20 16:38:30 -070022721 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
22722 &pwdiConfigBSS->wdiRateSet);
22723
22724 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
22725
22726 if(phalConfigBSS->edcaParamsValid)
22727 {
22728 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
22729 &pwdiConfigBSS->wdiBEEDCAParams);
22730 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
22731 &pwdiConfigBSS->wdiBKEDCAParams);
22732 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
22733 &pwdiConfigBSS->wdiVIEDCAParams);
22734 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
22735 &pwdiConfigBSS->wdiVOEDCAParams);
22736 }
22737
Jeff Johnsone7245742012-09-05 17:12:55 -070022738 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070022739
22740 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
22741
22742#ifdef WLAN_FEATURE_VOWIFI_11R
22743
Jeff Johnsone7245742012-09-05 17:12:55 -070022744 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070022745 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070022746
Jeff Johnson295189b2012-06-20 16:38:30 -070022747 if( phalConfigBSS->extSetStaKeyParamValid )
22748 {
22749 /*-----------------------------------------------------------------------
22750 Copy the STA Key parameters into the HAL message
22751 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022752 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
22754
Jeff Johnsone7245742012-09-05 17:12:55 -070022755 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022756 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
22757
22758 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
22759
22760 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
22761
22762 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
22763
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
22765 keyIndex++)
22766 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022767 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022768 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
22769 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
22770 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
22771 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
22772 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
22773 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022774 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022775 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022776 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022778 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022779 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
22780 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022781 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022782 WDI_MAX_KEY_LENGTH);
22783 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 }
22785 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22786 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022787 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022788 sizeof(phalConfigBSS->extSetStaKeyParam) );
22789 }
22790
22791#endif /*WLAN_FEATURE_VOWIFI_11R*/
22792
Jeff Johnsone7245742012-09-05 17:12:55 -070022793#ifdef WLAN_FEATURE_11AC
22794 if(phalConfigBSS_V1 != NULL)
22795 {
22796 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22797 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22798 }
22799#endif
22800
Jeff Johnson295189b2012-06-20 16:38:30 -070022801}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22802
22803
Jeff Johnsone7245742012-09-05 17:12:55 -070022804/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022805 pointed to by user data */
22806WPT_STATIC WPT_INLINE void
22807WDI_ExtractRequestCBFromEvent
22808(
22809 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022810 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022811 void** ppUserData
22812)
22813{
22814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22815 switch ( pEvent->wdiRequest )
22816 {
22817 case WDI_START_REQ:
22818 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22819 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22820 break;
22821 case WDI_STOP_REQ:
22822 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22823 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22824 break;
22825 case WDI_INIT_SCAN_REQ:
22826 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22827 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22828 break;
22829 case WDI_START_SCAN_REQ:
22830 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22831 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22832 break;
22833 case WDI_END_SCAN_REQ:
22834 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22835 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22836 break;
22837 case WDI_FINISH_SCAN_REQ:
22838 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22839 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22840 break;
22841 case WDI_JOIN_REQ:
22842 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22843 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22844 break;
22845 case WDI_CONFIG_BSS_REQ:
22846 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22847 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22848 break;
22849 case WDI_DEL_BSS_REQ:
22850 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22851 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22852 break;
22853 case WDI_POST_ASSOC_REQ:
22854 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22855 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22856 break;
22857 case WDI_DEL_STA_REQ:
22858 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22859 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22860 break;
22861 case WDI_DEL_STA_SELF_REQ:
22862 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22863 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22864 break;
22865
22866 case WDI_SET_BSS_KEY_REQ:
22867 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22868 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22869 break;
22870 case WDI_RMV_BSS_KEY_REQ:
22871 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22872 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22873 break;
22874 case WDI_SET_STA_KEY_REQ:
22875 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22876 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22877 break;
22878 case WDI_RMV_STA_KEY_REQ:
22879 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22880 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22881 break;
22882 case WDI_ADD_TS_REQ:
22883 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22884 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22885 break;
22886 case WDI_DEL_TS_REQ:
22887 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22888 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22889 break;
22890 case WDI_UPD_EDCA_PRMS_REQ:
22891 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22892 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22893 break;
22894 case WDI_ADD_BA_SESSION_REQ:
22895 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22896 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22897 break;
22898 case WDI_DEL_BA_REQ:
22899 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22900 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22901 break;
22902#ifdef FEATURE_WLAN_CCX
22903 case WDI_TSM_STATS_REQ:
22904 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22905 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22906 break;
22907#endif
22908 case WDI_CH_SWITCH_REQ:
22909 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22910 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22911 break;
22912 case WDI_CONFIG_STA_REQ:
22913 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22914 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22915 break;
22916 case WDI_SET_LINK_ST_REQ:
22917 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22918 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22919 break;
22920 case WDI_GET_STATS_REQ:
22921 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22922 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22923 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022924#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22925 case WDI_GET_ROAM_RSSI_REQ:
22926 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22927 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
22928 break;
22929#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022930 case WDI_UPDATE_CFG_REQ:
22931 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22932 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22933 break;
22934 case WDI_ADD_BA_REQ:
22935 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22936 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22937 break;
22938 case WDI_TRIGGER_BA_REQ:
22939 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22940 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22941 break;
22942 case WDI_UPD_BCON_PRMS_REQ:
22943 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22944 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22945 break;
22946 case WDI_SND_BCON_REQ:
22947 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22948 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22949 break;
22950 case WDI_ENTER_BMPS_REQ:
22951 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22952 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22953 break;
22954 case WDI_EXIT_BMPS_REQ:
22955 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22956 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22957 break;
22958 case WDI_ENTER_UAPSD_REQ:
22959 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22960 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22961 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070022962 case WDI_EXIT_UAPSD_REQ:
22963 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22964 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22965 break;
22966 case WDI_SET_UAPSD_PARAM_REQ:
22967 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22968 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
22969 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022970 case WDI_UPDATE_UAPSD_PARAM_REQ:
22971 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22972 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22973 break;
22974 case WDI_CONFIGURE_RXP_FILTER_REQ:
22975 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22976 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22977 break;
22978 case WDI_SET_BEACON_FILTER_REQ:
22979 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22980 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22981 break;
22982 case WDI_REM_BEACON_FILTER_REQ:
22983 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22984 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022985 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022986 case WDI_SET_RSSI_THRESHOLDS_REQ:
22987 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22988 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22989 break;
22990 case WDI_HOST_OFFLOAD_REQ:
22991 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22992 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22993 break;
22994 case WDI_WOWL_ADD_BC_PTRN_REQ:
22995 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22996 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22997 break;
22998 case WDI_WOWL_DEL_BC_PTRN_REQ:
22999 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23000 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23001 break;
23002 case WDI_WOWL_ENTER_REQ:
23003 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23004 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23005 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023006 case WDI_WOWL_EXIT_REQ:
23007 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23008 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23009 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023010 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23011 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23012 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23013 break;
23014 case WDI_FLUSH_AC_REQ:
23015 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23016 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23017 break;
23018 case WDI_BTAMP_EVENT_REQ:
23019 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23020 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23021 break;
23022 case WDI_KEEP_ALIVE_REQ:
23023 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23024 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23025 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023026#if defined FEATURE_WLAN_SCAN_PNO
23027 case WDI_SET_PREF_NETWORK_REQ:
23028 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23029 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23030 break;
23031 case WDI_SET_RSSI_FILTER_REQ:
23032 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23033 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23034 break;
23035 case WDI_UPDATE_SCAN_PARAMS_REQ:
23036 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23037 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23038 break;
23039#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023040 case WDI_SET_TX_PER_TRACKING_REQ:
23041 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23042 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023043 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023044#if defined WLAN_FEATURE_PACKET_FILTERING
23045 case WDI_8023_MULTICAST_LIST_REQ:
23046 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23047 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23048 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023049 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23050 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23051 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23052 break;
23053 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23054 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23055 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23056 break;
23057 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23058 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23059 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23060 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023061#endif
23062 case WDI_SET_POWER_PARAMS_REQ:
23063 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23064 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23065 break;
23066#if defined WLAN_FEATURE_GTK_OFFLOAD
23067 case WDI_GTK_OFFLOAD_REQ:
23068 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23069 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23070 break;
23071 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23072 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23073 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23074 break;
23075#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023076
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 default:
23078 *ppfnReqCB = NULL;
23079 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023080 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023081 }
23082}/*WDI_ExtractRequestCBFromEvent*/
23083
23084
23085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023086 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 frame xtl is enabled for a particular STA.
23088
23089 WDI_PostAssocReq must have been called.
23090
Jeff Johnsone7245742012-09-05 17:12:55 -070023091 @param uSTAIdx: STA index
23092
Jeff Johnson295189b2012-06-20 16:38:30 -070023093 @see WDI_PostAssocReq
23094 @return Result of the function call
23095*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023096wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023097WDI_IsHwFrameTxTranslationCapable
23098(
23099 wpt_uint8 uSTAIdx
23100)
23101{
Jeff Johnsone7245742012-09-05 17:12:55 -070023102 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023103 uma value*/
23104 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023105 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023106 ------------------------------------------------------------------------*/
23107 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23108 {
23109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23110 "WDI API call before module is initialized - Fail request");
23111
Jeff Johnsone7245742012-09-05 17:12:55 -070023112 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023113 }
23114
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023115#ifdef WLAN_SOFTAP_VSTA_FEATURE
23116 if (IS_VSTA_IDX(uSTAIdx))
23117 {
23118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23119 "STA %d is a Virtual STA, "
23120 "HW frame translation disabled", uSTAIdx);
23121 return eWLAN_PAL_FALSE;
23122 }
23123#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023124
Jeff Johnson295189b2012-06-20 16:38:30 -070023125 return gWDICb.bFrameTransEnabled;
23126}/*WDI_IsHwFrameTxTranslationCapable*/
23127
23128#ifdef FEATURE_WLAN_SCAN_PNO
23129/**
23130 @brief WDI_SetPreferredNetworkList
23131
Jeff Johnsone7245742012-09-05 17:12:55 -070023132 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023133 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023134
Jeff Johnson295189b2012-06-20 16:38:30 -070023135 wdiPNOScanCb: callback for passing back the response
23136 of the Set PNO operation received from the
23137 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023138
Jeff Johnson295189b2012-06-20 16:38:30 -070023139 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023140 callback
23141
Jeff Johnson295189b2012-06-20 16:38:30 -070023142 @return Result of the function call
23143*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023144WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023145WDI_SetPreferredNetworkReq
23146(
23147 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23148 WDI_PNOScanCb wdiPNOScanCb,
23149 void* pUserData
23150)
23151{
23152 WDI_EventInfoType wdiEventData = {{0}};
23153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23154
23155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023156 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023157 ------------------------------------------------------------------------*/
23158 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23159 {
23160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23161 "WDI API call before module is initialized - Fail request");
23162
Jeff Johnsone7245742012-09-05 17:12:55 -070023163 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023164 }
23165
23166 /*------------------------------------------------------------------------
23167 Fill in Event data and post to the Main FSM
23168 ------------------------------------------------------------------------*/
23169 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023170 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023171 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023172 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023173 wdiEventData.pUserData = pUserData;
23174
23175 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23176}
23177
23178
23179/**
23180 @brief WDI_SetRssiFilterReq
23181
Jeff Johnsone7245742012-09-05 17:12:55 -070023182 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023183 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023184
Jeff Johnson295189b2012-06-20 16:38:30 -070023185 wdiRssiFilterCb: callback for passing back the response
23186 of the Set RSSI Filter operation received from the
23187 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023188
Jeff Johnson295189b2012-06-20 16:38:30 -070023189 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023190 callback
23191
Jeff Johnson295189b2012-06-20 16:38:30 -070023192 @return Result of the function call
23193*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023194WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023195WDI_SetRssiFilterReq
23196(
23197 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
23198 WDI_RssiFilterCb wdiRssiFilterCb,
23199 void* pUserData
23200)
23201{
23202 WDI_EventInfoType wdiEventData = {{0}};
23203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23204
23205 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023206 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023207 ------------------------------------------------------------------------*/
23208 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23209 {
23210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23211 "WDI API call before module is initialized - Fail request");
23212
Jeff Johnsone7245742012-09-05 17:12:55 -070023213 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023214 }
23215
23216 /*------------------------------------------------------------------------
23217 Fill in Event data and post to the Main FSM
23218 ------------------------------------------------------------------------*/
23219 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023220 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023221 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023222 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023223 wdiEventData.pUserData = pUserData;
23224
23225 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23226}/*WDI_SetRssiFilterReq*/
23227
23228/**
23229 @brief WDI_UpdateScanParamsReq
23230
Jeff Johnsone7245742012-09-05 17:12:55 -070023231 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023232 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023233
Jeff Johnson295189b2012-06-20 16:38:30 -070023234 wdiUpdateScanParamsCb: callback for passing back the response
23235 of the Set PNO operation received from the
23236 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023237
Jeff Johnson295189b2012-06-20 16:38:30 -070023238 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023239 callback
23240
Jeff Johnson295189b2012-06-20 16:38:30 -070023241 @return Result of the function call
23242*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023243WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023244WDI_UpdateScanParamsReq
23245(
23246 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23247 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23248 void* pUserData
23249)
23250{
23251 WDI_EventInfoType wdiEventData = {{0}};
23252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23253
23254 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023255 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023256 ------------------------------------------------------------------------*/
23257 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23258 {
23259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23260 "WDI API call before module is initialized - Fail request");
23261
Jeff Johnsone7245742012-09-05 17:12:55 -070023262 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023263 }
23264
23265 /*------------------------------------------------------------------------
23266 Fill in Event data and post to the Main FSM
23267 ------------------------------------------------------------------------*/
23268 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023269 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023270 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023271 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023272 wdiEventData.pUserData = pUserData;
23273
23274 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23275}
23276
23277/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023278 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023279 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023280
23281 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023282 pwdiPNOScanReqParams: pointer to the info received
23283 from upper layers
23284 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023285 and its size
23286
Jeff Johnson295189b2012-06-20 16:38:30 -070023287 @return Result of the function call
23288*/
23289
23290WDI_Status
23291WDI_PackPreferredNetworkList
23292(
23293 WDI_ControlBlockType* pWDICtx,
23294 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23295 wpt_uint8** ppSendBuffer,
23296 wpt_uint16* pSize
23297)
23298{
Jeff Johnsone7245742012-09-05 17:12:55 -070023299 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023300 wpt_uint16 usDataOffset = 0;
23301 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023302 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023303 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023304 /*-----------------------------------------------------------------------
23305 Get message buffer
23306 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023307 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023308 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023309 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023310 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023311 {
23312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23313 "Unable to get send buffer in Set PNO req %x ",
23314 pwdiPNOScanReqParams);
23315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023317 }
23318
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023319 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23320
Jeff Johnson295189b2012-06-20 16:38:30 -070023321 /*-------------------------------------------------------------------------
23322 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23323 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023324 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023325 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023326 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023327 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23328
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023329 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023330 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023331 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023332 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023333 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23334
23335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023336 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023337 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23338 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23339 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23340
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023341 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023342 {
23343 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023344 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023345 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23346
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023347 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023348 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023349 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023350
23351 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023352 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023354
23355 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023356 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023357 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023358
Jeff Johnsone7245742012-09-05 17:12:55 -070023359 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023360 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023361 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023362 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23363 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23364 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23365 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023366
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023367 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023368 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023369 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023370
23371 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023372 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023373 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23374
23375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023376 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023377 pPrefNetwListParams->aNetworks[i].ssId.length,
23378 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023379 }
23380
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023381 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023382 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023383 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23384 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23385 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23386
23387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023388 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023389 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023390 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23391 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23392
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023393 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023394 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023395 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023397 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023398 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23399 }
23400
23401 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023402 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023403 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23404 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23405 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023406 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023407
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023408 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023409 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023410 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023411
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023412 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023413 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23414 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23415 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023416 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023417
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023418 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023419 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023420 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023421
23422 /*Set the output values*/
23423 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023424 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023425
23426 return WDI_STATUS_SUCCESS;
23427}/*WDI_PackPreferredNetworkList*/
23428
23429/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023430 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023431 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023432
23433 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023434 pwdiPNOScanReqParams: pointer to the info received
23435 from upper layers
23436 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023437 and its size
23438
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 @return Result of the function call
23440*/
23441
23442WDI_Status
23443WDI_PackPreferredNetworkListNew
23444(
23445 WDI_ControlBlockType* pWDICtx,
23446 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23447 wpt_uint8** ppSendBuffer,
23448 wpt_uint16* pSize
23449)
23450{
Jeff Johnsone7245742012-09-05 17:12:55 -070023451 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 wpt_uint16 usDataOffset = 0;
23453 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023454 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023455 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023456
23457 /*-----------------------------------------------------------------------
23458 Get message buffer
23459 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023460 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023461 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023462 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023463 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023464 {
23465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23466 "Unable to get send buffer in Set PNO req %x ",
23467 pwdiPNOScanReqParams);
23468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023469 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023470 }
23471
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023472 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23473
Jeff Johnson295189b2012-06-20 16:38:30 -070023474 /*-------------------------------------------------------------------------
23475 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23476 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023477 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023478 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023479 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023480 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23481
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023482 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023483 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023484 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023485 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023486 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23487
23488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023489 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023490 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23491 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23492 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23493
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023494 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023495 {
23496 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023497 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023498 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23499
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023500 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023501 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023502 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023503
23504 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023505 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023506 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023507
23508 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023509 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023510 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023511
23512 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023513 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023514 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023515
Jeff Johnsone7245742012-09-05 17:12:55 -070023516 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023517 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023518 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023519 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23520
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023521 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023522 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023523 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023524
23525 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023526 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023527 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23528
23529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023530 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023531 pPrefNetwListParams->aNetworks[i].ssId.length,
23532 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023533 }
23534
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023535 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023536 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023537 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23538 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23539 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23540
23541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023542 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023543 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023544 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23545 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23546
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023547 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023548 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023549 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023550 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023551 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023552 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23553 }
23554
23555 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023556 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023557 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23558 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23559 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023560 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023561
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023562 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023563 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023564 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023565
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023566 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023567 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23568 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23569 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023570 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023571
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023572 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023573 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023574 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023575
Jeff Johnson295189b2012-06-20 16:38:30 -070023576
23577 /*Set the output values*/
23578 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023580
23581 return WDI_STATUS_SUCCESS;
23582}/*WDI_PackPreferredNetworkListNew*/
23583
23584/**
23585 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023586
23587 @param pWDICtx: pointer to the WLAN DAL context
23588 pEventData: pointer to the event information structure
23589
Jeff Johnson295189b2012-06-20 16:38:30 -070023590 @return Result of the function call
23591*/
23592WDI_Status
23593WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023594(
Jeff Johnson295189b2012-06-20 16:38:30 -070023595 WDI_ControlBlockType* pWDICtx,
23596 WDI_EventInfoType* pEventData
23597)
23598{
23599 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
23600 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023601 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023602 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023603 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023604
23605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023607 -------------------------------------------------------------------------*/
23608 if (( NULL == pEventData ) ||
23609 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
23610 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
23611 {
23612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023616 }
23617
23618 /*-------------------------------------------------------------------------
23619 Pack the PNO request structure based on version
23620 -------------------------------------------------------------------------*/
23621 if ( pWDICtx->wdiPNOVersion > 0 )
23622 {
23623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023624 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023625 pWDICtx->wdiPNOVersion);
23626
23627 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
23628 &pSendBuffer, &usSendSize);
23629 }
23630 else
23631 {
23632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023633 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023634 pWDICtx->wdiPNOVersion);
23635
23636 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23637 &pSendBuffer, &usSendSize);
23638 }
23639
23640 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23641 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23642 {
23643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023644 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023646 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023647 }
23648
23649 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023650 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023651
23652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023653 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023654 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023655 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23656 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023657}
23658
23659/**
23660 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023661
23662 @param pWDICtx: pointer to the WLAN DAL context
23663 pEventData: pointer to the event information structure
23664
Jeff Johnson295189b2012-06-20 16:38:30 -070023665 @see
23666 @return Result of the function call
23667*/
23668WDI_Status
23669WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023670(
Jeff Johnson295189b2012-06-20 16:38:30 -070023671 WDI_ControlBlockType* pWDICtx,
23672 WDI_EventInfoType* pEventData
23673)
23674{
23675 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
23676 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023677 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023678 wpt_uint16 usDataOffset = 0;
23679 wpt_uint16 usSendSize = 0;
23680 wpt_uint8 ucRssiThreshold;
23681
23682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023683 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023684 -------------------------------------------------------------------------*/
23685 if (( NULL == pEventData ) ||
23686 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
23687 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
23688 {
23689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023690 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023693 }
23694
23695 /*-----------------------------------------------------------------------
23696 Get message buffer
23697 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023698 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023699 sizeof(ucRssiThreshold),
23700 &pSendBuffer, &usDataOffset, &usSendSize))||
23701 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
23702 {
23703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23704 "Unable to get send buffer in Set PNO req %x %x %x",
23705 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
23706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023707 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023708 }
23709
23710 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
23711
Jeff Johnsone7245742012-09-05 17:12:55 -070023712 wpalMemoryCopy( pSendBuffer+usDataOffset,
23713 &ucRssiThreshold,
23714 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070023715
23716 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023717 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023718
23719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023720 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023721 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023722 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23723 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023724}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023725#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
23726/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023727 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070023728
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023729 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023730 by the Device Interface
23731
23732 wdiRoamOffloadScancb: callback for passing back the response
23733 of the Roam Candidate Lookup Req operation received from the
23734 device
23735
23736 pUserData: user data will be passed back with the
23737 callback
23738 @return Result of the function call
23739*/
23740WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023741WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023742(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023743 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023744 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
23745 void* pUserData
23746)
23747{
23748 WDI_EventInfoType wdiEventData = {{0}};
23749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23750
23751 /*------------------------------------------------------------------------
23752 Sanity Check
23753 ------------------------------------------------------------------------*/
23754 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23755 {
23756 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23757 "WDI API call before module is initialized - Fail request");
23758
23759 return WDI_STATUS_E_NOT_ALLOWED;
23760 }
23761
23762 /*------------------------------------------------------------------------
23763 Fill in Event data and post to the Main FSM
23764 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023765 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
23766 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
23767 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023768 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
23769 wdiEventData.pUserData = pUserData;
23770
23771 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23772}
23773
23774void
23775WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
23776{
23777 switch (wdiEdType)
23778 {
23779 case WDI_ED_NONE:
23780 *EdType = eED_NONE;
23781 break;
23782 case WDI_ED_WEP40:
23783 case WDI_ED_WEP104:
23784 *EdType = eED_WEP;
23785 break;
23786 case WDI_ED_TKIP:
23787 *EdType = eED_TKIP;
23788 break;
23789 case WDI_ED_CCMP:
23790#ifdef WLAN_FEATURE_11W
23791 case WDI_ED_AES_128_CMAC:
23792#endif
23793 *EdType = eED_CCMP;
23794 break;
23795#ifdef FEATURE_WLAN_WAPI
23796 case WDI_ED_WPI:
23797 *EdType = eED_WPI;
23798 break;
23799#endif
23800 case WDI_ED_ANY:
23801 *EdType = eED_ANY;
23802 break;
23803
23804 default:
23805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23806 "%s: Unknown Encryption Type", __func__);
23807 break;
23808 }
23809}
23810
23811/**
23812 @brief Helper function to pack Start Roam Candidate Lookup
23813 Request parameters
23814
23815 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023816 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023817 from upper layers
23818 ppSendBuffer, pSize - out pointers of the packed buffer
23819 and its size
23820
23821 @return Result of the function call
23822*/
23823
23824WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023825WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023826(
23827 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023828 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023829 wpt_uint8** ppSendBuffer,
23830 wpt_uint16* pSize
23831)
23832{
23833 wpt_uint8* pSendBuffer = NULL;
23834 wpt_uint16 usDataOffset = 0;
23835 wpt_uint16 usSendSize = 0;
23836 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
23837 wpt_uint8 i;
23838 /*-----------------------------------------------------------------------
23839 Get message buffer
23840 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023841 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023842 sizeof(tRoamCandidateListParams),
23843 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070023844 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023845 {
23846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23847 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023848 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023849 WDI_ASSERT(0);
23850 return WDI_STATUS_E_FAILURE;
23851 }
23852 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070023853 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023854 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023855 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023856 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023857 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023858 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023859 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023860 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023861 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023862 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023863
23864 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023865 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023866 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023867 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023868 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
23869 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023870 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
23871 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
23872 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
23873 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
23874 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
23875 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
23876 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
23877 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
23878 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
23879 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
23880 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
23881 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
23882 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
23883 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023884 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023885 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
23886 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
23887 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023888
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
23890 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
23891 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
23892 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
23893 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
23894 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
23895 "HomeAwayTime=%d\n",
23896 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
23897 pRoamCandidateListParams->RoamScanOffloadEnabled,
23898 pRoamCandidateListParams->Command,
23899 pRoamCandidateListParams->StartScanReason,
23900 pRoamCandidateListParams->NeighborScanTimerPeriod,
23901 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
23902 pRoamCandidateListParams->NeighborScanChannelMinTime,
23903 pRoamCandidateListParams->NeighborScanChannelMaxTime,
23904 pRoamCandidateListParams->EmptyRefreshScanPeriod,
23905 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
23906 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
23907 pRoamCandidateListParams->ConnectedNetwork.authentication,
23908 pRoamCandidateListParams->ConnectedNetwork.encryption,
23909 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
23910 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
23911 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023912 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023913 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023914 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023915 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023916 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
23917 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023918 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023919 pRoamCandidateListParams->us24GProbeSize);
23920 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023921 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023922 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023923 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023924 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
23925 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023926 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023927 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023928 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
23929 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
23930 pRoamCandidateListParams->nProbes =
23931 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
23932 pRoamCandidateListParams->HomeAwayTime =
23933 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
23934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023935 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
23936 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023938 }
23939
23940
23941 /*Set the output values*/
23942 *ppSendBuffer = pSendBuffer;
23943 *pSize = usSendSize;
23944 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023945}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023946
23947/**
23948 @brief Process Start Roam Candidate Lookup Request function
23949
23950 @param pWDICtx: pointer to the WLAN DAL context
23951 pEventData: pointer to the event information structure
23952
23953 @return Result of the function call
23954*/
23955WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023956WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023957(
23958 WDI_ControlBlockType* pWDICtx,
23959 WDI_EventInfoType* pEventData
23960)
23961{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023962 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023963 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
23964 wpt_uint8* pSendBuffer = NULL;
23965 wpt_uint16 usSendSize = 0;
23966 WDI_Status wdiStatus;
23967 /*-------------------------------------------------------------------------
23968 Sanity check
23969 -------------------------------------------------------------------------*/
23970 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023971 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023972 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
23973 {
23974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23975 "%s: Invalid parameters", __func__);
23976 WDI_ASSERT(0);
23977 return WDI_STATUS_E_FAILURE;
23978 }
23979
23980 /*-------------------------------------------------------------------------
23981 Pack the Start Roam Candidate Lookup request structure based on version
23982 -------------------------------------------------------------------------*/
23983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23984 "%s: Packing Roam Candidate Lookup request ", __func__);
23985
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023986 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023987 &pSendBuffer, &usSendSize);
23988
23989 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23990 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23991 {
23992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23993 "%s: failed to pack request parameters", __func__);
23994 WDI_ASSERT(0);
23995 return wdiStatus;
23996 }
23997
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023998 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
23999 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024000
24001 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024002 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024003 -------------------------------------------------------------------------*/
24004 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024005 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024006}
24007
24008/**
24009 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24010 response is being received over the bus from HAL)
24011
24012 @param pWDICtx: pointer to the WLAN DAL context
24013 pEventData: pointer to the event information structure
24014
24015 @see
24016 @return Result of the function call
24017*/
24018WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024019WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024020(
24021 WDI_ControlBlockType* pWDICtx,
24022 WDI_EventInfoType* pEventData
24023)
24024{
24025 WDI_Status wdiStatus;
24026 eHalStatus halStatus;
24027 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24028
24029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24030
24031 /*-------------------------------------------------------------------------
24032 Sanity check
24033 -------------------------------------------------------------------------*/
24034 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24035 ( NULL == pEventData->pEventData ))
24036 {
24037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24038 "%s: Invalid parameters", __func__);
24039 WDI_ASSERT(0);
24040 return WDI_STATUS_E_FAILURE;
24041 }
24042
24043 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24044
24045 /*-------------------------------------------------------------------------
24046 Extract response and send it to UMAC
24047 -------------------------------------------------------------------------*/
24048 halStatus = *((eHalStatus*)pEventData->pEventData);
24049 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24050
24051 /*Notify UMAC*/
24052 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24053
24054 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024055}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024056#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024057
24058/**
24059 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024060
24061 @param pWDICtx: pointer to the WLAN DAL context
24062 pEventData: pointer to the event information structure
24063
Jeff Johnson295189b2012-06-20 16:38:30 -070024064 @see
24065 @return Result of the function call
24066*/
24067WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024068WDI_PackUpdateScanParamsReq
24069(
24070 WDI_ControlBlockType* pWDICtx,
24071 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24072 wpt_uint8** ppSendBuffer,
24073 wpt_uint16* pSize
24074)
24075{
24076 wpt_uint8* pSendBuffer = NULL;
24077 wpt_uint16 usDataOffset = 0;
24078 wpt_uint16 usSendSize = 0;
24079 tUpdateScanParams updateScanParams = {0};
24080
24081
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024083 "Begin WDI Update Scan Parameters Old Style Params");
24084 /*-----------------------------------------------------------------------
24085 Get message buffer
24086 -----------------------------------------------------------------------*/
24087 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24088 sizeof(updateScanParams),
24089 &pSendBuffer, &usDataOffset, &usSendSize))||
24090 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24091 {
24092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24093 "Unable to get send buffer in Update Scan Params req %x",
24094 pwdiUpdateScanParams);
24095 WDI_ASSERT(0);
24096 return WDI_STATUS_E_FAILURE;
24097 }
24098
24099 //
24100 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24101 //
24102
24103 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24104 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24105
24106 updateScanParams.ucChannelCount =
24107 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24108 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24109 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24110 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24111
24112 wpalMemoryCopy( updateScanParams.aChannels,
24113 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24114 updateScanParams.ucChannelCount);
24115
24116
24117 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24118 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24119 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24120 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24121 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24122
24123 wpalMemoryCopy( pSendBuffer+usDataOffset,
24124 &updateScanParams,
24125 sizeof(updateScanParams));
24126
24127 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24128 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24129
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024131 "End Update Scan Parameters Old Style");
24132
24133 /*Set the output values*/
24134 *ppSendBuffer = pSendBuffer;
24135 *pSize = usSendSize;
24136
24137 return WDI_STATUS_SUCCESS;
24138}
24139
24140/**
24141 @brief Process Update Scan Params function
24142
24143 @param pWDICtx: pointer to the WLAN DAL context
24144 pEventData: pointer to the event information structure
24145
24146 @see
24147 @return Result of the function call
24148*/
24149WDI_Status
24150WDI_PackUpdateScanParamsReqEx
24151(
24152 WDI_ControlBlockType* pWDICtx,
24153 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24154 wpt_uint8** ppSendBuffer,
24155 wpt_uint16* pSize
24156)
24157{
24158 wpt_uint8* pSendBuffer = NULL;
24159 wpt_uint16 usDataOffset = 0;
24160 wpt_uint16 usSendSize = 0;
24161 tUpdateScanParamsEx updateScanParams = {0};
24162
24163
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024164 /*-----------------------------------------------------------------------
24165 Get message buffer
24166 -----------------------------------------------------------------------*/
24167 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24168 sizeof(updateScanParams),
24169 &pSendBuffer, &usDataOffset, &usSendSize))||
24170 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24171 {
24172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24173 "Unable to get send buffer in Update Scan Params Ex req %x",
24174 pwdiUpdateScanParams);
24175 WDI_ASSERT(0);
24176 return WDI_STATUS_E_FAILURE;
24177 }
24178
24179 //
24180 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24181 //
24182
24183 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24184 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24185
24186 updateScanParams.ucChannelCount =
24187 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24188 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24189 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24190 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
24191
24192 wpalMemoryCopy( updateScanParams.aChannels,
24193 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24194 updateScanParams.ucChannelCount);
24195
24196
24197 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24198 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24199 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24200 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24201 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24202
24203 wpalMemoryCopy( pSendBuffer+usDataOffset,
24204 &updateScanParams,
24205 sizeof(updateScanParams));
24206
24207 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24208 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24209
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024210 /*Set the output values*/
24211 *ppSendBuffer = pSendBuffer;
24212 *pSize = usSendSize;
24213
24214 return WDI_STATUS_SUCCESS;
24215}
24216
24217/**
24218 @brief Process Update Scan Params function
24219
24220 @param pWDICtx: pointer to the WLAN DAL context
24221 pEventData: pointer to the event information structure
24222
24223 @see
24224 @return Result of the function call
24225*/
24226WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024227WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024228(
Jeff Johnson295189b2012-06-20 16:38:30 -070024229 WDI_ControlBlockType* pWDICtx,
24230 WDI_EventInfoType* pEventData
24231)
24232{
24233 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
24234 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024235 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024236 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024237 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024238
24239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024241 -------------------------------------------------------------------------*/
24242 if (( NULL == pEventData ) ||
24243 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
24244 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
24245 {
24246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024250 }
24251
24252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24253 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070024254
24255 //
24256 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24257 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024258 if ( pWDICtx->wlanVersion.revision < 1 )
24259 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024260 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024261 &pSendBuffer, &usSendSize);
24262 }
24263 else
24264 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024265 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
24266 &pSendBuffer, &usSendSize);
24267 }
24268
24269 if(WDI_STATUS_SUCCESS != wdiStatus)
24270 {
24271 //memory allocation failed
24272 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024273 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024274
Jeff Johnson295189b2012-06-20 16:38:30 -070024275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024276 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024277 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024279 wdiUpdateScanParamsCb, pEventData->pUserData,
24280 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024281}
24282
24283/**
24284 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070024285
24286 @param pWDICtx: pointer to the WLAN DAL context
24287 pEventData: pointer to the event information structure
24288
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 @see
24290 @return Result of the function call
24291*/
24292WDI_Status
24293WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070024294(
Jeff Johnson295189b2012-06-20 16:38:30 -070024295 WDI_ControlBlockType* pWDICtx,
24296 WDI_EventInfoType* pEventData
24297)
24298{
Srikant Kuppa0f679052013-05-07 13:56:02 -070024299 WDI_LowLevelIndType wdiInd;
24300 tpPrefNetwFoundParams pNetwFoundParams;
24301 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024302
24303
24304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 -------------------------------------------------------------------------*/
24307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24308 ( NULL == pEventData->pEventData ))
24309 {
24310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024312 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070024313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024314 }
24315
24316 /*-------------------------------------------------------------------------
24317 Extract indication and send it to UMAC
24318 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070024319 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
24320
24321 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
24322 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
24323 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
24324
24325 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
24326 {
24327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24328 "%s: fail to allocate memory", __func__);
24329 return WDI_STATUS_MEM_FAILURE;
24330 }
24331
24332 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
24333 (pNetwFoundParams->ssId.length < 32 )?
24334 pNetwFoundParams->ssId.length : 32;
24335 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24336 pNetwFoundParams->ssId.ssId,
24337 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
24338 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
24339 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
24340 pNetwFoundParams->frameLength;
24341 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
24342 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
24343 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024344
24345 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024346 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024347
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 // DEBUG
24349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
24350 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
24351 wdiInd.wdiIndicationType,
24352 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24353 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
24354
ltimariu034f7d62013-01-24 18:54:33 -080024355 if ( pWDICtx->wdiLowLevelIndCB )
24356 {
24357 /*Notify UMAC*/
24358 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
24359 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024360
24361 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024362}
24363
24364/**
24365 @brief Process PNO Rsp function (called when a
24366 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024367
24368 @param pWDICtx: pointer to the WLAN DAL context
24369 pEventData: pointer to the event information structure
24370
Jeff Johnson295189b2012-06-20 16:38:30 -070024371 @see
24372 @return Result of the function call
24373*/
24374WDI_Status
24375WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024376(
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 WDI_ControlBlockType* pWDICtx,
24378 WDI_EventInfoType* pEventData
24379)
24380{
24381 WDI_Status wdiStatus;
24382 eHalStatus halStatus;
24383 WDI_PNOScanCb wdiPNOScanCb = NULL;
24384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24385
24386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024388 -------------------------------------------------------------------------*/
24389 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24390 ( NULL == pEventData->pEventData ))
24391 {
24392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024393 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024396 }
24397
24398
Jeff Johnsone7245742012-09-05 17:12:55 -070024399 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024400
24401 /*-------------------------------------------------------------------------
24402 Extract response and send it to UMAC
24403 -------------------------------------------------------------------------*/
24404 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024405 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024406
24407 /*Notify UMAC*/
24408 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
24409
Jeff Johnsone7245742012-09-05 17:12:55 -070024410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024411}/*WDI_ProcessSetPreferredNetworkRsp*/
24412
24413/**
24414 @brief Process RSSI Filter Rsp function (called when a
24415 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024416
24417 @param pWDICtx: pointer to the WLAN DAL context
24418 pEventData: pointer to the event information structure
24419
Jeff Johnson295189b2012-06-20 16:38:30 -070024420 @see
24421 @return Result of the function call
24422*/
24423WDI_Status
24424WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024425(
Jeff Johnson295189b2012-06-20 16:38:30 -070024426 WDI_ControlBlockType* pWDICtx,
24427 WDI_EventInfoType* pEventData
24428)
24429{
24430 WDI_Status wdiStatus;
24431 eHalStatus halStatus;
24432 WDI_RssiFilterCb wdiRssiFilterCb;
24433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24434
24435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024437 -------------------------------------------------------------------------*/
24438 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24439 ( NULL == pEventData->pEventData ))
24440 {
24441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024445 }
24446
Jeff Johnsone7245742012-09-05 17:12:55 -070024447 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024448
24449 /*-------------------------------------------------------------------------
24450 Extract response and send it to UMAC
24451 -------------------------------------------------------------------------*/
24452 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024453 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024454
24455 /*Notify UMAC*/
24456 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
24457
Jeff Johnsone7245742012-09-05 17:12:55 -070024458 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024459}/*WDI_ProcessSetRssiFilterRsp*/
24460
24461/**
24462 @brief Process Update Scan Params Rsp function (called when a
24463 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024464
24465 @param pWDICtx: pointer to the WLAN DAL context
24466 pEventData: pointer to the event information structure
24467
Jeff Johnson295189b2012-06-20 16:38:30 -070024468 @see
24469 @return Result of the function call
24470*/
24471WDI_Status
24472WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024473(
Jeff Johnson295189b2012-06-20 16:38:30 -070024474 WDI_ControlBlockType* pWDICtx,
24475 WDI_EventInfoType* pEventData
24476)
24477{
24478 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070024479 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024480 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024481 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24483
24484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024486 -------------------------------------------------------------------------*/
24487 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24488 ( NULL == pEventData->pEventData ))
24489 {
24490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024494 }
24495
24496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024497 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024498
Jeff Johnsone7245742012-09-05 17:12:55 -070024499 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024500
24501 /*-------------------------------------------------------------------------
24502 Extract response and send it to UMAC
24503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024504 wpalMemoryCopy( (void *)&halUpdScanParams.status,
24505 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024506 sizeof(halUpdScanParams.status));
24507
24508 uStatus = halUpdScanParams.status;
24509
24510 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070024511 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024512
24513 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024514 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070024515
Jeff Johnsone7245742012-09-05 17:12:55 -070024516 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024517
24518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024519 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024520 halUpdScanParams.status);
24521
24522 /*Notify UMAC*/
24523 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24524
Jeff Johnsone7245742012-09-05 17:12:55 -070024525 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024526}
24527#endif // FEATURE_WLAN_SCAN_PNO
24528
24529#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070024530WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024531WDI_8023MulticastListReq
24532(
24533 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
24534 WDI_8023MulticastListCb wdi8023MulticastListCallback,
24535 void* pUserData
24536)
24537{
24538 WDI_EventInfoType wdiEventData;
24539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24540
24541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024542 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024543
24544 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024545 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024546 ------------------------------------------------------------------------*/
24547 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24548 {
24549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24550 "WDI API call before module is initialized - Fail request");
24551
Jeff Johnsone7245742012-09-05 17:12:55 -070024552 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024553 }
24554
24555 /*------------------------------------------------------------------------
24556 Fill in Event data and post to the Main FSM
24557 ------------------------------------------------------------------------*/
24558 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024559 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024560 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024561 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024562 wdiEventData.pUserData = pUserData;
24563
24564 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24565}
24566
Jeff Johnsone7245742012-09-05 17:12:55 -070024567WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024568WDI_ReceiveFilterSetFilterReq
24569(
24570 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
24571 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
24572 void* pUserData
24573)
24574{
24575 WDI_EventInfoType wdiEventData;
24576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24577
24578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024579 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024580
24581 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024582 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024583 ------------------------------------------------------------------------*/
24584 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24585 {
24586 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24587 "WDI API call before module is initialized - Fail request");
24588
Jeff Johnsone7245742012-09-05 17:12:55 -070024589 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024590 }
24591
24592 /*------------------------------------------------------------------------
24593 Fill in Event data and post to the Main FSM
24594 ------------------------------------------------------------------------*/
24595 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024596 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
24597 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070024598 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24599 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024600 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024601 wdiEventData.pUserData = pUserData;
24602
24603
24604 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24605}
24606
Jeff Johnsone7245742012-09-05 17:12:55 -070024607WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024608WDI_FilterMatchCountReq
24609(
24610 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
24611 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
24612 void* pUserData
24613)
24614{
24615 WDI_EventInfoType wdiEventData;
24616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24617
24618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024619 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024620
24621 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024622 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024623 ------------------------------------------------------------------------*/
24624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24625 {
24626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24627 "WDI API call before module is initialized - Fail request");
24628
Jeff Johnsone7245742012-09-05 17:12:55 -070024629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024630 }
24631
24632 /*------------------------------------------------------------------------
24633 Fill in Event data and post to the Main FSM
24634 ------------------------------------------------------------------------*/
24635 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024636 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024637 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024638 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024639 wdiEventData.pUserData = pUserData;
24640
24641
24642 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24643}
24644
Jeff Johnsone7245742012-09-05 17:12:55 -070024645WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024646WDI_ReceiveFilterClearFilterReq
24647(
24648 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
24649 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
24650 void* pUserData
24651)
24652{
24653 WDI_EventInfoType wdiEventData;
24654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24655
24656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024657 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024658
24659 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024660 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024661 ------------------------------------------------------------------------*/
24662 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24663 {
24664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24665 "WDI API call before module is initialized - Fail request");
24666
Jeff Johnsone7245742012-09-05 17:12:55 -070024667 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024668 }
24669
24670 /*------------------------------------------------------------------------
24671 Fill in Event data and post to the Main FSM
24672 ------------------------------------------------------------------------*/
24673 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024674 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024675 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024676 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024677 wdiEventData.pUserData = pUserData;
24678
24679
24680 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24681}
24682
24683/**
24684 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024685
24686 @param pWDICtx: pointer to the WLAN DAL context
24687 pEventData: pointer to the event information structure
24688
Jeff Johnson295189b2012-06-20 16:38:30 -070024689 @see
24690 @return Result of the function call
24691*/
24692WDI_Status
24693WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024694(
Jeff Johnson295189b2012-06-20 16:38:30 -070024695 WDI_ControlBlockType* pWDICtx,
24696 WDI_EventInfoType* pEventData
24697)
24698{
24699 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
24700 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024701 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024702 wpt_uint16 usDataOffset = 0;
24703 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024704 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024705 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024706 wpt_uint8 ucCurrentBSSSesIdx = 0;
24707 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024708
24709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024710 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024711
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024712 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
24713 if( NULL == pRcvFltMcAddrListType )
24714 {
24715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24716 "Failed to alloc in WDI_Process8023MulticastListReq");
24717 return WDI_STATUS_E_FAILURE;
24718 }
24719
Jeff Johnson295189b2012-06-20 16:38:30 -070024720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024722 -------------------------------------------------------------------------*/
24723 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024724 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024725 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024726 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024727 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
24728 {
24729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024730 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024731 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024733 return WDI_STATUS_E_FAILURE;
24734 }
24735
24736 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24737 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
24738 &pBSSSes);
24739 if ( NULL == pBSSSes )
24740 {
24741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024742 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024743 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024745 }
24746
24747 /*-----------------------------------------------------------------------
24748 Get message buffer
24749 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024750 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24751 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024752 sizeof(tHalRcvFltMcAddrListType),
24753 &pSendBuffer, &usDataOffset, &usSendSize))||
24754 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
24755 {
24756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24757 "Unable to get send buffer in "
24758 "WDI_Process8023MulticastListReq() %x %x %x",
24759 pEventData, pwdiFltPktSetMcListReqParamsType,
24760 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070024761 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024764 }
24765
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024766 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070024767 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024768 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024769 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024770 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070024771 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
24772 sizeof(tSirMacAddr));
24773 }
24774
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024775 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024776 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024777 pRcvFltMcAddrListType,
24778 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070024779
24780 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024781 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024782
24783
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024784 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024786 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024788 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024789 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024790 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024791}
24792
24793/**
24794 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024795
24796 @param pWDICtx: pointer to the WLAN DAL context
24797 pEventData: pointer to the event information structure
24798
Jeff Johnson295189b2012-06-20 16:38:30 -070024799 @see
24800 @return Result of the function call
24801*/
24802WDI_Status
24803WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024804(
Jeff Johnson295189b2012-06-20 16:38:30 -070024805 WDI_ControlBlockType* pWDICtx,
24806 WDI_EventInfoType* pEventData
24807)
24808{
24809 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
24810 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024811 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024812 wpt_uint16 usDataOffset = 0;
24813 wpt_uint16 usSendSize = 0;
24814 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024815 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024816 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024817 wpt_uint8 ucCurrentBSSSesIdx = 0;
24818 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024819 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
24820 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024821
24822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024823 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024824
24825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024826 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024827 -------------------------------------------------------------------------*/
24828 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024829 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070024830 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024831 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024832 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
24833 {
24834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024835 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024837 return WDI_STATUS_E_FAILURE;
24838 }
24839
24840 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24841 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
24842 &pBSSSes);
24843 if ( NULL == pBSSSes )
24844 {
24845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024846 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024848 }
24849
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024850 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
24851 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024852
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024853 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
24854 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24855 * sizeof(tHalSessionizedRcvPktFilterCfgType));
24856
24857 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
24858 usSessRcvPktFilterCfgSize);
24859
24860 if(NULL == pSessRcvPktFilterCfg)
24861 {
24862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24863 "%s: Failed to allocate memory for "
24864 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024865 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024866 WDI_ASSERT(0);
24867 return WDI_STATUS_E_FAILURE;
24868 }
24869
24870 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
24871
24872 /*-----------------------------------------------------------------------
24873 Get message buffer
24874 -----------------------------------------------------------------------*/
24875
24876 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
24877 usSessRcvPktFilterCfgSize,
24878 &pSendBuffer, &usDataOffset, &usSendSize))||
24879 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
24880 {
24881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24882 "Unable to get send buffer in "
24883 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24884 pEventData, pwdiSetRcvPktFilterReqInfo,
24885 wdiReceiveFilterSetFilterCb);
24886 WDI_ASSERT(0);
24887 wpalMemoryFree(pSessRcvPktFilterCfg);
24888 return WDI_STATUS_E_FAILURE;
24889 }
24890
24891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24892 "UsData Off %d UsSend %d cfg %d",usDataOffset,
24893 usSendSize,pSessRcvPktFilterCfg);
24894
24895 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24896 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24897 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24898 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
24899
24900 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
24901
24902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24903 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
24904 pSessRcvPktFilterCfg->filterType);
24905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24906 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
24907 pSessRcvPktFilterCfg->coleasceTime);
24908
24909 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
24910 {
24911 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
24912 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24913 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
24914 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24915 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
24916 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24917 pSessRcvPktFilterCfg->paramsData[i].dataLength =
24918 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
24919
24920 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
24921 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24922 8);
24923 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
24924 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24925 8);
24926
24927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24928 "Out:Proto %d Comp Flag %d \n",
24929 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
24930 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
24931
24932 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24933 "Data Offset %d Data Len %d\n",
24934 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
24935 pSessRcvPktFilterCfg->paramsData[i].dataLength);
24936
24937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24938 "CData: %d:%d:%d:%d:%d:%d\n",
24939 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
24940 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
24941 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
24942 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
24943 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
24944 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
24945
24946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24947 "MData: %d:%d:%d:%d:%d:%d\n",
24948 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
24949 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
24950 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
24951 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
24952 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
24953 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
24954 }
24955
24956 wpalMemoryCopy( pSendBuffer+usDataOffset,
24957 pSessRcvPktFilterCfg,
24958 usSessRcvPktFilterCfgSize);
24959
24960
24961 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24962 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
24963
24964 wpalMemoryFree(pSessRcvPktFilterCfg);
24965
24966 }
24967 /*If SLM_SESSIONIZATION is not supported then do this */
24968 else
24969 {
24970 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
24971 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24972 * sizeof(tHalRcvPktFilterParams));
24973
24974 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070024975 usRcvPktFilterCfgSize);
24976
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024977 if(NULL == pRcvPktFilterCfg)
24978 {
24979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24980 "%s: Failed to allocate memory for "
24981 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024982 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024983 WDI_ASSERT(0);
24984 return WDI_STATUS_E_FAILURE;
24985 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024986
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024987 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024988
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024989 /*-----------------------------------------------------------------------
24990 Get message buffer
24991 -----------------------------------------------------------------------*/
24992 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024993 usRcvPktFilterCfgSize,
24994 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024995 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
24996 {
24997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070024998 "Unable to get send buffer in "
24999 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25000 pEventData, pwdiSetRcvPktFilterReqInfo,
25001 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025002 WDI_ASSERT(0);
25003 wpalMemoryFree(pRcvPktFilterCfg);
25004 return WDI_STATUS_E_FAILURE;
25005 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025006
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025008 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025009 usSendSize,usRcvPktFilterCfgSize);
25010
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025011 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25012 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25013 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25014 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025015
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025017 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025018 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025020 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025021 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025022
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025023 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25024 {
25025 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25026 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25027 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25028 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25029 pRcvPktFilterCfg->paramsData[i].dataOffset =
25030 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25031 pRcvPktFilterCfg->paramsData[i].dataLength =
25032 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025033
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025034 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025035 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25036 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025037 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025038 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25039 8);
25040
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025042 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025043 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025044 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25045
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25047 "Data Offset %d Data Len %d\n",
25048 pRcvPktFilterCfg->paramsData[i].dataOffset,
25049 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025050
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25052 "CData: %d:%d:%d:%d:%d:%d\n",
25053 pRcvPktFilterCfg->paramsData[i].compareData[0],
25054 pRcvPktFilterCfg->paramsData[i].compareData[1],
25055 pRcvPktFilterCfg->paramsData[i].compareData[2],
25056 pRcvPktFilterCfg->paramsData[i].compareData[3],
25057 pRcvPktFilterCfg->paramsData[i].compareData[4],
25058 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025059
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25061 "MData: %d:%d:%d:%d:%d:%d\n",
25062 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25063 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25064 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25065 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25066 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25067 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25068 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025069
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025070 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025071 pRcvPktFilterCfg,
25072 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025073
25074
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025075 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25076 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025077
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025079 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025080 wpalMemoryFree(pRcvPktFilterCfg);
25081 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025083 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025084 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025085 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025086 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025087 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025088}
25089
25090/**
25091 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025092
25093 @param pWDICtx: pointer to the WLAN DAL context
25094 pEventData: pointer to the event information structure
25095
Jeff Johnson295189b2012-06-20 16:38:30 -070025096 @see
25097 @return Result of the function call
25098*/
25099WDI_Status
25100WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025101(
Jeff Johnson295189b2012-06-20 16:38:30 -070025102 WDI_ControlBlockType* pWDICtx,
25103 WDI_EventInfoType* pEventData
25104)
25105{
25106 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25107 NULL;
25108 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25109 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025110 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025111 wpt_uint16 usDataOffset = 0;
25112 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025113 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25114 wpt_uint8 ucCurrentBSSSesIdx = 0;
25115 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025116
25117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025118 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025119
25120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025121 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025122 -------------------------------------------------------------------------*/
25123 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025124 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025125 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025126 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025127 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25128 {
25129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025130 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025133 }
25134
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025135 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25136 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25137 &pBSSSes);
25138 if ( NULL == pBSSSes )
25139 {
25140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025141 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025142 return WDI_STATUS_E_FAILURE;
25143 }
25144
Jeff Johnson295189b2012-06-20 16:38:30 -070025145 /*-----------------------------------------------------------------------
25146 Get message buffer
25147 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025148 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25149 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025150 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025151 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025152 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025153 {
25154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25155 "Unable to get send buffer in "
25156 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25157 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25158 wdiFilterMatchCountCb);
25159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025161 }
25162
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025163 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25164 wpalMemoryCopy( pSendBuffer+usDataOffset,
25165 &rcvFltPktMatchCntReqParam,
25166 sizeof(rcvFltPktMatchCntReqParam));
25167
Jeff Johnson295189b2012-06-20 16:38:30 -070025168 //
25169 // Don't need to fill send buffer other than header
25170 //
25171 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025172 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025173
25174
25175 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025176 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025177 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025178 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25179 wdiFilterMatchCountCb,
25180 pEventData->pUserData,
25181 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025182}
25183
25184/**
25185 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025186
25187 @param pWDICtx: pointer to the WLAN DAL context
25188 pEventData: pointer to the event information structure
25189
Jeff Johnson295189b2012-06-20 16:38:30 -070025190 @see
25191 @return Result of the function call
25192*/
25193WDI_Status
25194WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025195(
Jeff Johnson295189b2012-06-20 16:38:30 -070025196 WDI_ControlBlockType* pWDICtx,
25197 WDI_EventInfoType* pEventData
25198)
Jeff Johnsone7245742012-09-05 17:12:55 -070025199{
Jeff Johnson295189b2012-06-20 16:38:30 -070025200 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
25201 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025202 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025203 wpt_uint16 usDataOffset = 0;
25204 wpt_uint16 usSendSize = 0;
25205 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025206 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025207 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025208
25209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025210 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025211
25212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025213 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025214 -------------------------------------------------------------------------*/
25215 if (( NULL == pEventData ) ||
25216 ( NULL == (pwdiRcvFltPktClearReqParamsType =
25217 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025218 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025219 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
25220 {
25221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025222 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025224 return WDI_STATUS_E_FAILURE;
25225 }
25226
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025227 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025228 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
25229 &pBSSSes);
25230 if ( NULL == pBSSSes )
25231 {
25232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025233 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025235 }
25236
25237 /*-----------------------------------------------------------------------
25238 Get message buffer
25239 -----------------------------------------------------------------------*/
25240 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025241 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025242 sizeof(tHalRcvFltPktClearParam),
25243 &pSendBuffer, &usDataOffset, &usSendSize))||
25244 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
25245 {
25246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25247 "Unable to get send buffer in "
25248 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
25249 pEventData, pwdiRcvFltPktClearReqParamsType,
25250 wdiRcvFltPktClearFilterCb);
25251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025253 }
25254
25255
25256 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025257 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070025258 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025259 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070025260
Jeff Johnsone7245742012-09-05 17:12:55 -070025261 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
25262 wpalMemoryCopy( pSendBuffer+usDataOffset,
25263 &rcvFltPktClearParam,
25264 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070025265
25266 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025267 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025268
25269
25270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025271 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025272 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025273 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025274 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025275 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025276}
25277
25278/**
25279 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025280
25281 @param pWDICtx: pointer to the WLAN DAL context
25282 pEventData: pointer to the event information structure
25283
Jeff Johnson295189b2012-06-20 16:38:30 -070025284 @see
25285 @return Result of the function call
25286*/
25287WDI_Status
25288WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025289(
Jeff Johnson295189b2012-06-20 16:38:30 -070025290 WDI_ControlBlockType* pWDICtx,
25291 WDI_EventInfoType* pEventData
25292)
25293{
Jeff Johnson295189b2012-06-20 16:38:30 -070025294 eHalStatus halStatus;
25295 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025296 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
25297 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25299
25300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025301 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025302
25303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025305 -------------------------------------------------------------------------*/
25306 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25307 ( NULL == pEventData->pEventData ))
25308 {
25309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025313 }
25314
Jeff Johnsone7245742012-09-05 17:12:55 -070025315 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025316
25317 /*-------------------------------------------------------------------------
25318 Extract response and send it to UMAC
25319 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025320 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25321 {
25322 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
25323 pEventData->pEventData,
25324 sizeof(halRcvFltPktSetMcListRsp));
25325
25326 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
25327 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
25328 wdiRcvFltPktSetMcListRspInfo.bssIdx =
25329 halRcvFltPktSetMcListRsp.bssIdx;
25330 }
25331 else
25332 {
25333 halStatus = *((eHalStatus*)pEventData->pEventData);
25334 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25335 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025336
25337 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025338 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025339
Jeff Johnsone7245742012-09-05 17:12:55 -070025340 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025341}
25342
25343/**
25344 @brief Process Set Rsp function (called when a
25345 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025346
25347 @param pWDICtx: pointer to the WLAN DAL context
25348 pEventData: pointer to the event information structure
25349
Jeff Johnson295189b2012-06-20 16:38:30 -070025350 @see
25351 @return Result of the function call
25352*/
25353WDI_Status
25354WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025355(
Jeff Johnson295189b2012-06-20 16:38:30 -070025356 WDI_ControlBlockType* pWDICtx,
25357 WDI_EventInfoType* pEventData
25358)
25359{
Jeff Johnson295189b2012-06-20 16:38:30 -070025360 eHalStatus halStatus;
25361 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025362 tHalSetPktFilterRspParams halSetPktFilterRspParams;
25363 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25365
25366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025367 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025368
25369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025370 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025371 -------------------------------------------------------------------------*/
25372 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25373 ( NULL == pEventData->pEventData ))
25374 {
25375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025376 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025379 }
25380
25381 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025382 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025383
25384 /*-------------------------------------------------------------------------
25385 Extract response and send it to UMAC
25386 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025387 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25388 {
25389 wpalMemoryCopy( &halSetPktFilterRspParams,
25390 pEventData->pEventData,
25391 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025392
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025393 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
25394 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
25395 }
25396 else
25397 {
25398 halStatus = *((eHalStatus*)pEventData->pEventData);
25399 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25400 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025401 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025402 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025403
Jeff Johnsone7245742012-09-05 17:12:55 -070025404 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025405}
25406
25407/**
25408 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025409
25410 @param pWDICtx: pointer to the WLAN DAL context
25411 pEventData: pointer to the event information structure
25412
Jeff Johnson295189b2012-06-20 16:38:30 -070025413 @see
25414 @return Result of the function call
25415*/
25416WDI_Status
25417WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025418(
Jeff Johnson295189b2012-06-20 16:38:30 -070025419 WDI_ControlBlockType* pWDICtx,
25420 WDI_EventInfoType* pEventData
25421)
25422{
Jeff Johnson295189b2012-06-20 16:38:30 -070025423 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025424 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025425 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
25426 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025427
25428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25429
25430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025431 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025432
25433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025435 -------------------------------------------------------------------------*/
25436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25437 ( NULL == pEventData->pEventData ))
25438 {
25439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025443 }
25444
Jeff Johnsone7245742012-09-05 17:12:55 -070025445 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025446
25447 /*-------------------------------------------------------------------------
25448 Extract response and send it to UMAC
25449 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025450 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25451 {
25452 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
25453 pEventData->pEventData,
25454 sizeof(halRcvFltrPktMatachRsp));
25455
25456 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
25457 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
25458 }
25459 else
25460 {
25461 halStatus = *((eHalStatus*)pEventData->pEventData);
25462 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25463 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025464
25465 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025466 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025467
Jeff Johnsone7245742012-09-05 17:12:55 -070025468 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025469}
25470
25471/**
25472 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025473
25474 @param pWDICtx: pointer to the WLAN DAL context
25475 pEventData: pointer to the event information structure
25476
Jeff Johnson295189b2012-06-20 16:38:30 -070025477 @see
25478 @return Result of the function call
25479*/
25480WDI_Status
25481WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025482(
Jeff Johnson295189b2012-06-20 16:38:30 -070025483 WDI_ControlBlockType* pWDICtx,
25484 WDI_EventInfoType* pEventData
25485)
25486{
Jeff Johnson295189b2012-06-20 16:38:30 -070025487 eHalStatus halStatus;
25488 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025489 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
25490 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25492
25493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025494 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025495
25496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025498 -------------------------------------------------------------------------*/
25499 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25500 ( NULL == pEventData->pEventData ))
25501 {
25502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025506 }
25507
25508 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025509 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025510
25511 /*-------------------------------------------------------------------------
25512 Extract response and send it to UMAC
25513 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025514 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25515 {
25516 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
25517 pEventData->pEventData,
25518 sizeof(halRcvFltPktClearRspMsg));
25519
25520 wdiRcvFltPktClearRspParamsType.wdiStatus =
25521 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
25522 wdiRcvFltPktClearRspParamsType.bssIdx =
25523 halRcvFltPktClearRspMsg.bssIdx;
25524 }
25525 else
25526 {
25527 halStatus = *((eHalStatus*)pEventData->pEventData);
25528 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25529 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025530
25531 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025532 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025533
Jeff Johnsone7245742012-09-05 17:12:55 -070025534 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025535}
25536#endif // WLAN_FEATURE_PACKET_FILTERING
25537
25538/**
25539 @brief Process Shutdown Rsp function
25540 There is no shutdown response comming from HAL
25541 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070025542
Jeff Johnson295189b2012-06-20 16:38:30 -070025543 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070025544 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025545
25546 @see
25547 @return Result of the function call
25548*/
25549WDI_Status
25550WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025551(
Jeff Johnson295189b2012-06-20 16:38:30 -070025552 WDI_ControlBlockType* pWDICtx,
25553 WDI_EventInfoType* pEventData
25554)
25555{
25556 /*There is no shutdown response comming from HAL - function just kept for
25557 simmetry */
25558 WDI_ASSERT(0);
25559 return WDI_STATUS_SUCCESS;
25560}/*WDI_ProcessShutdownRsp*/
25561
25562/**
25563 @brief WDI_SetPowerParamsReq
25564
Jeff Johnsone7245742012-09-05 17:12:55 -070025565 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070025566 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025567
Jeff Johnson295189b2012-06-20 16:38:30 -070025568 wdiPowerParamsCb: callback for passing back the response
25569 of the Set Power Params operation received from the
25570 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025571
Jeff Johnson295189b2012-06-20 16:38:30 -070025572 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025573 callback
25574
Jeff Johnson295189b2012-06-20 16:38:30 -070025575 @return Result of the function call
25576*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025577WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025578WDI_SetPowerParamsReq
25579(
25580 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
25581 WDI_SetPowerParamsCb wdiPowerParamsCb,
25582 void* pUserData
25583)
25584{
25585 WDI_EventInfoType wdiEventData;
25586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25587
25588 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025589 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025590 ------------------------------------------------------------------------*/
25591 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25592 {
25593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25594 "WDI API call before module is initialized - Fail request");
25595
Jeff Johnsone7245742012-09-05 17:12:55 -070025596 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025597 }
25598
25599 /*------------------------------------------------------------------------
25600 Fill in Event data and post to the Main FSM
25601 ------------------------------------------------------------------------*/
25602 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025603 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025604 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025605 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025606 wdiEventData.pUserData = pUserData;
25607
25608 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25609}/*WDI_SetPowerParamsReq*/
25610
25611/**
25612 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025613
25614 @param pWDICtx: pointer to the WLAN DAL context
25615 pEventData: pointer to the event information structure
25616
Jeff Johnson295189b2012-06-20 16:38:30 -070025617 @see
25618 @return Result of the function call
25619*/
25620WDI_Status
25621WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025622(
Jeff Johnson295189b2012-06-20 16:38:30 -070025623 WDI_ControlBlockType* pWDICtx,
25624 WDI_EventInfoType* pEventData
25625)
25626{
25627 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
25628 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025629 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025630 wpt_uint16 usDataOffset = 0;
25631 wpt_uint16 usSendSize = 0;
25632 tSetPowerParamsType powerParams;
25633
25634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025635 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025636 -------------------------------------------------------------------------*/
25637 if (( NULL == pEventData ) ||
25638 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
25639 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
25640 {
25641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025645 }
25646
25647 /*-----------------------------------------------------------------------
25648 Get message buffer
25649 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025650 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025651 sizeof(powerParams),
25652 &pSendBuffer, &usDataOffset, &usSendSize))||
25653 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
25654 {
25655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25656 "Unable to get send buffer in Set PNO req %x %x %x",
25657 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
25658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025660 }
25661
25662 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070025663 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070025664 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
25665
25666 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025667 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070025668 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
25669
25670 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025671 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070025672 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
25673
25674 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070025675 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070025676 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
25677
25678 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070025679 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070025680 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
25681
25682 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025683 powerParams.uBETInterval =
25684 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070025685
Yue Ma0da19492013-05-13 17:01:29 -070025686 /* MAX LI for modulated DTIM */
25687 powerParams.uMaxLIModulatedDTIM =
25688 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070025689
25690 wpalMemoryCopy( pSendBuffer+usDataOffset,
25691 &powerParams,
25692 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025693
25694 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025695 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025696
25697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025698 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025699 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025700 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25701 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025702}
25703
25704/**
25705 @brief Process Power Params Rsp function (called when a
25706 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025707
25708 @param pWDICtx: pointer to the WLAN DAL context
25709 pEventData: pointer to the event information structure
25710
Jeff Johnson295189b2012-06-20 16:38:30 -070025711 @see
25712 @return Result of the function call
25713*/
25714WDI_Status
25715WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025716(
Jeff Johnson295189b2012-06-20 16:38:30 -070025717 WDI_ControlBlockType* pWDICtx,
25718 WDI_EventInfoType* pEventData
25719)
25720{
25721 WDI_Status wdiStatus;
25722 eHalStatus halStatus;
25723 WDI_SetPowerParamsCb wdiPowerParamsCb;
25724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25725
25726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025728 -------------------------------------------------------------------------*/
25729 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25730 ( NULL == pEventData->pEventData ))
25731 {
25732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025736 }
25737
Jeff Johnsone7245742012-09-05 17:12:55 -070025738 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025739
25740 /*-------------------------------------------------------------------------
25741 Extract response and send it to UMAC
25742 -------------------------------------------------------------------------*/
25743 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025744 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025745
25746 /*Notify UMAC*/
25747 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25748
Jeff Johnsone7245742012-09-05 17:12:55 -070025749 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025750}/*WDI_ProcessSetPowerParamsRsp*/
25751
25752#ifdef WLAN_FEATURE_GTK_OFFLOAD
25753/**
25754 @brief WDI_GTKOffloadReq will be called when the upper MAC
25755 wants to set GTK Rekey Counter while in power save. Upon
25756 the call of this API the WLAN DAL will pack and send a
25757 HAL GTK offload request message to the lower RIVA
25758 sub-system if DAL is in state STARTED.
25759
25760 In state BUSY this request will be queued. Request won't
25761 be allowed in any other state.
25762
25763 WDI_PostAssocReq must have been called.
25764
25765 @param pwdiGtkOffloadParams: the GTK offload as specified
25766 by the Device Interface
25767
25768 wdiGtkOffloadCb: callback for passing back the response
25769 of the GTK offload operation received from the device
25770
25771 pUserData: user data will be passed back with the
25772 callback
25773
25774 @see WDI_PostAssocReq
25775 @return Result of the function call
25776*/
25777WDI_Status
25778WDI_GTKOffloadReq
25779(
25780 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
25781 WDI_GtkOffloadCb wdiGtkOffloadCb,
25782 void* pUserData
25783)
25784{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053025785 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25787
25788 /*------------------------------------------------------------------------
25789 Sanity Check
25790 ------------------------------------------------------------------------*/
25791 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25792 {
25793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25794 "WDI API call before module is initialized - Fail request");
25795
25796 return WDI_STATUS_E_NOT_ALLOWED;
25797 }
25798
25799 /*------------------------------------------------------------------------
25800 Fill in Event data and post to the Main FSM
25801 ------------------------------------------------------------------------*/
25802 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
25803 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070025804 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070025805 wdiEventData.pCBfnc = wdiGtkOffloadCb;
25806 wdiEventData.pUserData = pUserData;
25807
25808 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25809}
25810
25811
25812/**
25813 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
25814 MAC wants to get GTK Rekey Counter while in power save.
25815 Upon the call of this API the WLAN DAL will pack and
25816 send a HAL GTK offload request message to the lower RIVA
25817 sub-system if DAL is in state STARTED.
25818
25819 In state BUSY this request will be queued. Request won't
25820 be allowed in any other state.
25821
25822 WDI_PostAssocReq must have been called.
25823
25824 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
25825 Information Message as specified by the
25826 Device Interface
25827
25828 wdiGtkOffloadGetInfoCb: callback for passing back the
25829 response of the GTK offload operation received from the
25830 device
25831
25832 pUserData: user data will be passed back with the
25833 callback
25834
25835 @see WDI_PostAssocReq
25836 @return Result of the function call
25837*/
25838WDI_Status
25839WDI_GTKOffloadGetInfoReq
25840(
25841 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
25842 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
25843 void* pUserData
25844)
25845{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053025846 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25848
25849 /*------------------------------------------------------------------------
25850 Sanity Check
25851 ------------------------------------------------------------------------*/
25852 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25853 {
25854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25855 "WDI API call before module is initialized - Fail request");
25856
25857 return WDI_STATUS_E_NOT_ALLOWED;
25858 }
25859
25860 /*------------------------------------------------------------------------
25861 Fill in Event data and post to the Main FSM
25862 ------------------------------------------------------------------------*/
25863 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
25864 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
25865 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
25866 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
25867 wdiEventData.pUserData = pUserData;
25868
25869 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25870}
25871
25872
25873/**
25874 @brief Process set GTK Offload Request function
25875
25876 @param pWDICtx: pointer to the WLAN DAL context
25877 pEventData: pointer to the event information structure
25878
25879 @see
25880 @return Result of the function call
25881*/
25882WDI_Status
25883WDI_ProcessGTKOffloadReq
25884(
25885 WDI_ControlBlockType* pWDICtx,
25886 WDI_EventInfoType* pEventData
25887)
25888{
25889 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
25890 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
25891 wpt_uint8* pSendBuffer = NULL;
25892 wpt_uint16 usDataOffset = 0;
25893 wpt_uint16 usSendSize = 0;
25894 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025895 wpt_uint8 ucCurrentSessionId = 0;
25896 WDI_BSSSessionType* pBSSSes = NULL;
25897
Jeff Johnson295189b2012-06-20 16:38:30 -070025898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25899
25900 /*-------------------------------------------------------------------------
25901 Sanity check
25902 -------------------------------------------------------------------------*/
25903 if (( NULL == pEventData ) ||
25904 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
25905 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
25906 {
25907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025908 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025909 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025910 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025911 }
25912
25913 /*-----------------------------------------------------------------------
25914 Get message buffer
25915 -----------------------------------------------------------------------*/
25916 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
25917 sizeof(gtkOffloadReqParams),
25918 &pSendBuffer, &usDataOffset, &usSendSize))||
25919 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
25920 {
25921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25922 "Unable to get send buffer in GTK offload req %x %x %x",
25923 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
25924 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025925 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025926 }
25927
25928 //
25929 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
25930 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025931 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25932 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
25933 &pBSSSes);
25934 if ( NULL == pBSSSes )
25935 {
25936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025937 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025938 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025939 }
25940
25941 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
25942
Jeff Johnson295189b2012-06-20 16:38:30 -070025943 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
25944 // Copy KCK
25945 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
25946 // Copy KEK
25947 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
25948 // Copy KeyReplayCounter
25949 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
25950
25951 wpalMemoryCopy( pSendBuffer+usDataOffset,
25952 &gtkOffloadReqParams,
25953 sizeof(gtkOffloadReqParams));
25954
25955 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
25956 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
25957
25958 /*-------------------------------------------------------------------------
25959 Send Get STA Request to HAL
25960 -------------------------------------------------------------------------*/
25961 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25962 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025963
25964fail:
25965 // Release the message buffer so we don't leak
25966 wpalMemoryFree(pSendBuffer);
25967
25968failRequest:
25969 //WDA should have failure check to avoid the memory leak
25970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025971}
25972
25973
25974/**
25975 @brief Process GTK Offload Get Information Request function
25976
25977 @param pWDICtx: pointer to the WLAN DAL context
25978 pEventData: pointer to the event information structure
25979
25980 @see
25981 @return Result of the function call
25982*/
25983WDI_Status
25984WDI_ProcessGTKOffloadGetInfoReq
25985(
25986 WDI_ControlBlockType* pWDICtx,
25987 WDI_EventInfoType* pEventData
25988)
25989{
25990 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
25991 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
25992 wpt_uint8* pSendBuffer = NULL;
25993 wpt_uint16 usDataOffset = 0;
25994 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025995 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
25996 wpt_uint8 ucCurrentSessionId = 0;
25997 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025998
25999 /*-------------------------------------------------------------------------
26000 Sanity check
26001 -------------------------------------------------------------------------*/
26002 if (( NULL == pEventData ) ||
26003 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
26004 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
26005 {
26006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026008 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026009 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026010 }
26011
26012 /*-----------------------------------------------------------------------
26013 Get message buffer
26014 -----------------------------------------------------------------------*/
26015 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026016 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026017 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026018 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026019 {
26020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26021 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
26022 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
26023 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026024 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026025 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026026 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26027 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
26028 &pBSSSes);
26029 if ( NULL == pBSSSes )
26030 {
26031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026032 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026033 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026034 }
26035 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026036
26037 //
26038 // Don't need to fill send buffer other than header
26039 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026040 wpalMemoryCopy( pSendBuffer+usDataOffset,
26041 &halGtkOffloadGetInfoReqParams,
26042 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026043
26044 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
26045 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
26046
26047 /*-------------------------------------------------------------------------
26048 Send Get STA Request to HAL
26049 -------------------------------------------------------------------------*/
26050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26051 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026052fail:
26053 // Release the message buffer so we don't leak
26054 wpalMemoryFree(pSendBuffer);
26055
26056failRequest:
26057 //WDA should have failure check to avoid the memory leak
26058 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026059}
26060
26061/**
26062 @brief Process host offload Rsp function (called when a
26063 response is being received over the bus from HAL)
26064
26065 @param pWDICtx: pointer to the WLAN DAL context
26066 pEventData: pointer to the event information structure
26067
26068 @see
26069 @return Result of the function call
26070*/
26071WDI_Status
26072WDI_ProcessGtkOffloadRsp
26073(
26074 WDI_ControlBlockType* pWDICtx,
26075 WDI_EventInfoType* pEventData
26076)
26077{
Jeff Johnson295189b2012-06-20 16:38:30 -070026078 eHalStatus halStatus;
26079 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026080 tHalGtkOffloadRspParams halGtkOffloadRspParams;
26081 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26083
26084 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
26085
26086 /*-------------------------------------------------------------------------
26087 Sanity check
26088 -------------------------------------------------------------------------*/
26089 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26090 ( NULL == pEventData->pEventData))
26091 {
26092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026094 WDI_ASSERT(0);
26095 return WDI_STATUS_E_FAILURE;
26096 }
26097
26098 /*-------------------------------------------------------------------------
26099 Extract response and send it to UMAC
26100 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026101 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26102 {
26103 wpalMemoryCopy( &halGtkOffloadRspParams,
26104 pEventData->pEventData,
26105 sizeof(halGtkOffloadRspParams));
26106
26107 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026108 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026109 wdiGtkOffloadRsparams.bssIdx =
26110 halGtkOffloadRspParams.bssIdx;
26111 }
26112 else
26113 {
26114 halStatus = *((eHalStatus*)pEventData->pEventData);
26115 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26116 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026117
26118 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026119 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026120
26121 return WDI_STATUS_SUCCESS;
26122}
26123
26124/**
26125 @brief Process GTK Offload Get Information Response function
26126
26127 @param pWDICtx: pointer to the WLAN DAL context
26128 pEventData: pointer to the event information structure
26129
26130 @see
26131 @return Result of the function call
26132*/
26133WDI_Status
26134WDI_ProcessGTKOffloadGetInfoRsp
26135(
26136 WDI_ControlBlockType* pWDICtx,
26137 WDI_EventInfoType* pEventData
26138)
26139{
Jeff Johnson295189b2012-06-20 16:38:30 -070026140 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026141 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026142 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
26143 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026144 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026145
26146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26147
26148 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
26149
26150 /*-------------------------------------------------------------------------
26151 Sanity check
26152 -------------------------------------------------------------------------*/
26153 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26154 ( NULL == pEventData->pEventData ))
26155 {
26156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026158 WDI_ASSERT(0);
26159 return WDI_STATUS_E_FAILURE;
26160 }
26161
26162 /*-------------------------------------------------------------------------
26163 Extract response and send it to UMAC
26164 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026165 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26166 {
26167 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
26168 pEventData->pEventData,
26169 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026170
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026171 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026172 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026173 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
26174 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
26175 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
26176 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
26177 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
26178 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
26179 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
26180 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026181
26182 wpalMutexAcquire(&pWDICtx->wptMutex);
26183 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
26184 &pBSSSes);
26185
26186 if ( NULL == pBSSSes )
26187 {
26188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26189 "Association sequence for this BSS does not exist or "
26190 "association no longer in progress - mysterious HAL response");
26191 wpalMutexRelease(&pWDICtx->wptMutex);
26192 return WDI_STATUS_E_NOT_ALLOWED;
26193 }
26194
26195 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
26196 sizeof (wpt_macAddr));
26197 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026198 }
26199 else
26200 {
26201 halStatus = *((eHalStatus*)pEventData->pEventData);
26202 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26203 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026204 /*Notify UMAC*/
26205 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26206 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026207 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026208
26209 return WDI_STATUS_SUCCESS;
26210}
26211#endif // WLAN_FEATURE_GTK_OFFLOAD
26212
26213#ifdef WLAN_WAKEUP_EVENTS
26214WDI_Status
26215WDI_ProcessWakeReasonInd
26216(
26217 WDI_ControlBlockType* pWDICtx,
26218 WDI_EventInfoType* pEventData
26219)
26220{
26221 WDI_LowLevelIndType *pWdiInd;
26222 tpWakeReasonParams pWakeReasonParams;
26223 wpt_uint32 allocSize = 0;
26224
26225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026226 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026227
26228 /*-------------------------------------------------------------------------
26229 Sanity check
26230 -------------------------------------------------------------------------*/
26231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26232 ( NULL == pEventData->pEventData ))
26233 {
26234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026236 WDI_ASSERT( 0 );
26237 return WDI_STATUS_E_FAILURE;
26238 }
26239
26240 /*-------------------------------------------------------------------------
26241 Extract indication and send it to UMAC
26242 -------------------------------------------------------------------------*/
26243 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
26244
26245 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
26246
26247 //Allocate memory for WDI_WakeReasonIndType structure
26248 pWdiInd = wpalMemoryAllocate(allocSize) ;
26249
26250 if(NULL == pWdiInd)
26251 {
26252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26253 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026254 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026255 WDI_ASSERT(0);
26256 return WDI_STATUS_E_FAILURE;
26257 }
26258
26259 wpalMemoryZero(pWdiInd, allocSize);
26260
26261 /* Fill in the indication parameters*/
26262 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
26263 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
26264 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
26265 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
26266 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
26267 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
26268 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
26269 &(pWakeReasonParams->aDataStart[0]),
26270 pWakeReasonParams->ulStoredDataLen);
26271
ltimariu034f7d62013-01-24 18:54:33 -080026272
26273 if ( pWDICtx->wdiLowLevelIndCB )
26274 {
26275 /*Notify UMAC*/
26276 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
26277 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026278
26279 //Free memory allocated for WDI_WakeReasonIndType structure
26280 wpalMemoryFree(pWdiInd);
26281
26282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026283 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026284
26285 return WDI_STATUS_SUCCESS;
26286}
26287#endif // WLAN_WAKEUP_EVENTS
26288
26289void WDI_GetWcnssCompiledApiVersion
26290(
26291 WDI_WlanVersionType *pWcnssApiVersion
26292)
26293{
26294 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
26295 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
26296 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
26297 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
26298}
26299
26300/**
26301 @brief Process Set TM Level Rsp function (called when a
26302 response is being received over the bus from HAL)
26303
26304 @param pWDICtx: pointer to the WLAN DAL context
26305 pEventData: pointer to the event information structure
26306
26307 @see
26308 @return Result of the function call
26309*/
26310WDI_Status
26311WDI_ProcessSetTmLevelRsp
26312(
26313 WDI_ControlBlockType* pWDICtx,
26314 WDI_EventInfoType* pEventData
26315)
26316{
26317 WDI_Status wdiStatus;
26318 eHalStatus halStatus;
26319 WDI_SetTmLevelCb wdiSetTmLevelCb;
26320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26321
26322 /*-------------------------------------------------------------------------
26323 Sanity check
26324 -------------------------------------------------------------------------*/
26325 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26326 ( NULL == pEventData->pEventData ))
26327 {
26328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026329 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026330 WDI_ASSERT(0);
26331 return WDI_STATUS_E_FAILURE;
26332 }
26333
26334 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
26335
26336 /*-------------------------------------------------------------------------
26337 Extract response and send it to UMAC
26338 -------------------------------------------------------------------------*/
26339 halStatus = *((eHalStatus*)pEventData->pEventData);
26340 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26341
26342 /*Notify UMAC*/
26343 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
26344
26345 return WDI_STATUS_SUCCESS;
26346}/*WDI_ProcessSetTmLevelRsp*/
26347
26348/**
26349 @brief Process Set Thermal Mitigation level Changed request
26350
26351 @param pWDICtx: pointer to the WLAN DAL context
26352 pEventData: pointer to the event information structure
26353
26354 @see
26355 @return Result of the function call
26356*/
26357WDI_Status
26358WDI_ProcessSetTmLevelReq
26359(
26360 WDI_ControlBlockType* pWDICtx,
26361 WDI_EventInfoType* pEventData
26362)
26363{
26364 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
26365 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
26366 wpt_uint8* pSendBuffer = NULL;
26367 wpt_uint16 usDataOffset = 0;
26368 wpt_uint16 usSendSize = 0;
26369 tSetThermalMitgationType halTmMsg;
26370
26371 /*-------------------------------------------------------------------------
26372 Sanity check
26373 -------------------------------------------------------------------------*/
26374 if (( NULL == pEventData ) ||
26375 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
26376 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
26377 {
26378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026380 WDI_ASSERT(0);
26381 return WDI_STATUS_E_FAILURE;
26382 }
26383
26384 /*-----------------------------------------------------------------------
26385 Get message buffer
26386 -----------------------------------------------------------------------*/
26387 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
26388 sizeof(halTmMsg),
26389 &pSendBuffer, &usDataOffset, &usSendSize))||
26390 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
26391 {
26392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26393 "Unable to get send buffer in Set PNO req %x %x %x",
26394 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
26395 WDI_ASSERT(0);
26396 return WDI_STATUS_E_FAILURE;
26397 }
26398
26399 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
26400 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
26401
26402 wpalMemoryCopy( pSendBuffer+usDataOffset,
26403 &halTmMsg,
26404 sizeof(halTmMsg));
26405
26406 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
26407 pWDICtx->pfncRspCB = NULL;
26408 /*-------------------------------------------------------------------------
26409 Send Get STA Request to HAL
26410 -------------------------------------------------------------------------*/
26411 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26412 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
26413}
26414
26415/* Fill the value from the global features enabled array to the global capabilities
26416 * bitmap struct
26417 */
26418static void
26419FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
26420{
26421 wpt_int8 i;
26422 for (i=0; i<len; i++)
26423 {
26424 setFeatCaps(fCaps, enabledFeat[i]);
26425 }
26426}
26427
26428/**
26429 @brief WDI_featureCapsExchangeReq
26430 Post feature capability bitmap exchange event.
26431 Host will send its own capability to FW in this req and
26432 expect FW to send its capability back as a bitmap in Response
26433
26434 @param
26435
26436 wdiFeatureCapsExchangeCb: callback called on getting the response.
26437 It is kept to mantain similarity between WDI reqs and if needed, can
26438 be used in future. Currently, It is set to NULL
26439
26440 pUserData: user data will be passed back with the
26441 callback
26442
26443 @see
26444 @return Result of the function call
26445*/
26446WDI_Status
26447WDI_featureCapsExchangeReq
26448(
26449 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
26450 void* pUserData
26451)
26452{
26453 WDI_EventInfoType wdiEventData;
26454 wpt_int32 fCapsStructSize;
26455
26456 /*------------------------------------------------------------------------
26457 Sanity Check
26458 ------------------------------------------------------------------------*/
26459 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26460 {
26461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26462 "WDI API call before module is initialized - Fail request");
26463
26464 return WDI_STATUS_E_NOT_ALLOWED;
26465 }
26466
26467 /* Allocate memory separately for global variable carrying FW caps */
26468 fCapsStructSize = sizeof(tWlanFeatCaps);
26469 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26470 if ( NULL == gpHostWlanFeatCaps )
26471 {
26472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26473 "Cannot allocate memory for host capability info\n");
26474 WDI_ASSERT(0);
26475 return WDI_STATUS_MEM_FAILURE;
26476 }
26477
26478 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
26479
26480 /*------------------------------------------------------------------------
26481 Fill in Event data and post to the Main FSM
26482 ------------------------------------------------------------------------*/
26483 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
26484 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070026485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26486 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026487 gpHostWlanFeatCaps->featCaps[0],
26488 gpHostWlanFeatCaps->featCaps[1],
26489 gpHostWlanFeatCaps->featCaps[2],
26490 gpHostWlanFeatCaps->featCaps[3]
26491 );
26492
26493 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
26494 wdiEventData.pEventData = gpHostWlanFeatCaps;
26495 wdiEventData.uEventDataSize = fCapsStructSize;
26496 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
26497 wdiEventData.pUserData = pUserData;
26498
26499 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26500}
26501
26502/**
Yathishd8713192012-12-10 14:21:35 -080026503 @brief Disable Active mode offload in Host
26504
26505 @param void
26506 @see
26507 @return void
26508*/
26509void
26510WDI_disableCapablityFeature(wpt_uint8 feature_index)
26511{
26512 supportEnabledFeatures[feature_index] = 0;
26513 return;
26514}
26515
26516/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026517 @brief Process Host-FW Capability Exchange Request function
26518
26519 @param pWDICtx: pointer to the WLAN DAL context
26520 pEventData: pointer to the event information structure
26521
26522 @see
26523 @return Result of the function call
26524*/
26525WDI_Status
26526WDI_ProcessFeatureCapsExchangeReq
26527(
26528 WDI_ControlBlockType* pWDICtx,
26529 WDI_EventInfoType* pEventData
26530)
26531{
26532 wpt_uint8* pSendBuffer = NULL;
26533 wpt_uint16 usDataOffset = 0;
26534 wpt_uint16 usSendSize = 0;
26535 wpt_uint16 usLen = 0;
26536
26537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26538
26539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026540 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026541
26542 /*-------------------------------------------------------------------------
26543 Sanity check
26544 -------------------------------------------------------------------------*/
26545 /* Call back function is NULL since not required for cap exchange req */
26546 if (( NULL == pEventData ) ||
26547 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
26548 {
26549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026550 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026551 WDI_ASSERT(0);
26552 return WDI_STATUS_E_FAILURE;
26553 }
26554
26555 /*-----------------------------------------------------------------------
26556 Get message buffer
26557 -----------------------------------------------------------------------*/
26558 usLen = sizeof(tWlanFeatCaps);
26559
26560 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26561 WDI_FEATURE_CAPS_EXCHANGE_REQ,
26562 usLen,
26563 &pSendBuffer, &usDataOffset, &usSendSize))||
26564 ( usSendSize < (usDataOffset + usLen )))
26565 {
26566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26567 "Unable to get send buffer in feat caps exchange req %x %x",
26568 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
26569 WDI_ASSERT(0);
26570 return WDI_STATUS_E_FAILURE;
26571 }
26572
26573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026574 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026575 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
26576 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
26577 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
26578 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
26579 );
26580
26581 /* Copy host caps after the offset in the send buffer */
26582 wpalMemoryCopy( pSendBuffer+usDataOffset,
26583 (tWlanFeatCaps *)pEventData->pEventData,
26584 usLen);
26585
26586 /*-------------------------------------------------------------------------
26587 Send Start Request to HAL
26588 -------------------------------------------------------------------------*/
26589 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26590 (WDI_StartRspCb)pEventData->pCBfnc,
26591 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
26592
26593}/*WDI_ProcessFeatureCapsExchangeReq*/
26594
26595/**
26596 @brief Process Host-FW Capability Exchange Response function
26597
26598 @param pWDICtx: pointer to the WLAN DAL context
26599 pEventData: pointer to the event information structure
26600
26601 @see
26602 @return Result of the function call
26603*/
26604WDI_Status
26605WDI_ProcessFeatureCapsExchangeRsp
26606(
26607 WDI_ControlBlockType* pWDICtx,
26608 WDI_EventInfoType* pEventData
26609)
26610{
26611 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
26612 wpt_int32 fCapsStructSize;
26613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26614
26615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026616 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026617
26618 /*-------------------------------------------------------------------------
26619 Sanity check
26620 -------------------------------------------------------------------------*/
26621 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26622 ( NULL == pEventData->pEventData ))
26623 {
26624 /* It will go here when riva is old (doesn't understand this msg) and host is new */
26625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026627 WDI_ASSERT(0);
26628 return WDI_STATUS_E_FAILURE;
26629 }
26630
26631 /* Allocate memory separately for global variable carrying FW caps */
26632 fCapsStructSize = sizeof(tWlanFeatCaps);
26633 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26634 if ( NULL == gpFwWlanFeatCaps )
26635 {
26636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26637 "Cannot allocate memory for host capability info\n");
26638 WDI_ASSERT(0);
26639 return WDI_STATUS_MEM_FAILURE;
26640 }
26641
26642 /*-------------------------------------------------------------------------
26643 Unpack HAL Response Message - the header was already extracted by the
26644 main Response Handling procedure
26645 -------------------------------------------------------------------------*/
26646 /*-------------------------------------------------------------------------
26647 Extract response and send it to UMAC
26648 -------------------------------------------------------------------------*/
26649
26650 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
26651 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070026652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26653 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026654 gpFwWlanFeatCaps->featCaps[0],
26655 gpFwWlanFeatCaps->featCaps[1],
26656 gpFwWlanFeatCaps->featCaps[2],
26657 gpFwWlanFeatCaps->featCaps[3]
26658 );
Jeff Johnson295189b2012-06-20 16:38:30 -070026659 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
26660
26661 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
26662 if (wdiFeatureCapsExchangeCb != NULL)
26663 wdiFeatureCapsExchangeCb(NULL, NULL);
26664
26665 return WDI_STATUS_SUCCESS;
26666}
26667
Mohit Khanna4a70d262012-09-11 16:30:12 -070026668#ifdef WLAN_FEATURE_11AC
26669WDI_Status
26670WDI_ProcessUpdateVHTOpModeRsp
26671(
26672 WDI_ControlBlockType* pWDICtx,
26673 WDI_EventInfoType* pEventData
26674)
26675{
26676 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26677 WDI_Status wdiStatus;
26678 eHalStatus halStatus;
26679
26680 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26681
26682 /*-------------------------------------------------------------------------
26683 Sanity check
26684 -------------------------------------------------------------------------*/
26685 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26686 ( NULL == pEventData->pEventData))
26687 {
26688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026689 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026690 WDI_ASSERT(0);
26691 return WDI_STATUS_E_FAILURE;
26692 }
26693 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
26694
26695 /*-------------------------------------------------------------------------
26696 Extract response and send it to UMAC
26697 -------------------------------------------------------------------------*/
26698 halStatus = *((eHalStatus*)pEventData->pEventData);
26699 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26700
26701 /*Notify UMAC*/
26702 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
26703
26704 return WDI_STATUS_SUCCESS;
26705}
26706#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026707/**
26708 @brief WDI_getHostWlanFeatCaps
26709 WDI API that returns whether the feature passed to it as enum value in
26710 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
26711 variable storing host capability bitmap to find this. This can be used by
26712 other moduels to decide certain things like call different APIs based on
26713 whether a particular feature is supported.
26714
26715 @param
26716
26717 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
26718
26719 @see
26720 @return
26721 0 - if the feature is NOT supported in host
26722 any non-zero value - if the feature is SUPPORTED in host.
26723*/
26724wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
26725{
26726 wpt_uint8 featSupported = 0;
26727 if (gpHostWlanFeatCaps != NULL)
26728 {
26729 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
26730 }
26731 else
26732 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026734 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026735 }
26736 return featSupported;
26737}
26738
26739/**
26740 @brief WDI_getFwWlanFeatCaps
26741 WDI API that returns whether the feature passed to it as enum value in
26742 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
26743 variable storing host capability bitmap to find this. This can be used by
26744 other moduels to decide certain things like call different APIs based on
26745 whether a particular feature is supported.
26746
26747 @param
26748
26749 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
26750 in wlan_hal_msg.h.
26751
26752 @see
26753 @return
26754 0 - if the feature is NOT supported in FW
26755 any non-zero value - if the feature is SUPPORTED in FW.
26756*/
26757wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
26758{
26759 wpt_uint8 featSupported = 0;
26760 if (gpFwWlanFeatCaps != NULL)
26761 {
26762 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
26763 }
26764 else
26765 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026767 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026768 }
26769 return featSupported;
26770}
Mohit Khanna4a70d262012-09-11 16:30:12 -070026771
26772#ifdef WLAN_FEATURE_11AC
26773WDI_Status
26774WDI_ProcessUpdateVHTOpModeReq
26775(
26776 WDI_ControlBlockType* pWDICtx,
26777 WDI_EventInfoType* pEventData
26778)
26779{
26780 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
26781 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26782 wpt_uint8* pSendBuffer = NULL;
26783 wpt_uint16 usDataOffset = 0;
26784 wpt_uint16 usSendSize = 0;
26785
26786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26787
26788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026789 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026790
26791 /*-------------------------------------------------------------------------
26792 Sanity check
26793 -------------------------------------------------------------------------*/
26794 if (( NULL == pEventData ) ||
26795 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
26796 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
26797 {
26798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026799 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026800 WDI_ASSERT(0);
26801 return WDI_STATUS_E_FAILURE;
26802 }
26803
26804 /*-----------------------------------------------------------------------
26805 Get message buffer
26806 -----------------------------------------------------------------------*/
26807 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
26808 sizeof(WDI_UpdateVHTOpMode),
26809 &pSendBuffer, &usDataOffset, &usSendSize))||
26810 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
26811 {
26812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26813 "Unable to get send buffer in update vht opMode req");
26814 WDI_ASSERT(0);
26815 return WDI_STATUS_E_FAILURE;
26816 }
26817
26818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26819 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
26820
26821 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
26822 sizeof(WDI_UpdateVHTOpMode));
26823
26824 /*-------------------------------------------------------------------------
26825 Send Start Request to HAL
26826 -------------------------------------------------------------------------*/
26827 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26828 wdiVHTOpModeCb,
26829 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
26830
26831}
26832
26833WDI_Status
26834WDI_UpdateVHTOpModeReq
26835(
26836 WDI_UpdateVHTOpMode *pData,
26837 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
26838 void* pUserData
26839)
26840{
26841 WDI_EventInfoType wdiEventData;
26842
26843 /*------------------------------------------------------------------------
26844 Sanity Check
26845 ------------------------------------------------------------------------*/
26846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26847 {
26848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26849 "WDI API call before module is initialized - Fail request");
26850
26851 return WDI_STATUS_E_NOT_ALLOWED;
26852 }
26853
26854 /*------------------------------------------------------------------------
26855 Fill in Event data and post to the Main FSM
26856 ------------------------------------------------------------------------*/
26857 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
26858 wdiEventData.pEventData = pData;
26859 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
26860 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
26861 wdiEventData.pUserData = pUserData;
26862
26863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26864 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
26865
26866 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26867
26868}
26869#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026870
26871/**
26872 @brief WDI_TransportChannelDebug -
26873 Display DXE Channel debugging information
26874 User may request to display DXE channel snapshot
26875 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026876
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080026877 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026878 @param enableStallDetect : Enable stall detect feature
26879 This feature will take effect to data performance
26880 Not integrate till fully verification
26881 @see
26882 @return none
26883*/
26884void WDI_TransportChannelDebug
26885(
26886 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026887 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026888)
26889{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026890 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026891 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070026892}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026893/**
26894 @brief WDI_SsrTimerCB
26895 Callback function for SSR timer, if this is called then the graceful
26896 shutdown for Riva did not happen.
26897
26898 @param pUserData : user data to timer
26899
26900 @see
26901 @return none
26902*/
26903void
26904WDI_SsrTimerCB
26905(
26906 void *pUserData
26907)
26908{
26909 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
26910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26911
26912 if (NULL == pWDICtx )
26913 {
26914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026915 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026916 WDI_ASSERT(0);
26917 return;
26918 }
26919 wpalRivaSubystemRestart();
26920
26921 return;
26922
26923}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070026924
26925/**
26926 @brief WDI_SetEnableSSR -
26927 This API is called to enable/disable SSR on WDI timeout.
26928
26929 @param enableSSR : enable/disable SSR
26930
26931 @see
26932 @return none
26933*/
26934void WDI_SetEnableSSR(wpt_boolean enableSSR)
26935{
26936 gWDICb.bEnableSSR = enableSSR;
26937}